php - 一个 PDO 函数用于任何查询
问题描述
我正在寻找创建一个 php 函数来进行 SQL 查询。我将提供 sql 查询(插入、更新、删除、选择、替换)和任何占位符,然后它将返回一个数组,其中包含详细说明问题的值或错误。
这是我到目前为止所拥有的,它工作正常,但我想知道是否有办法让它变得更好,或者我是否有任何我看不到自己的错误。
$pdo = new PDO($dsn, $user, $passwd);
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
function sql_query($query, $placeholders = false){
$data = array();
global $pdo;
$letter = substr($query, 0, 1);
try{
$stmt = $pdo->prepare($query);
//echo "Successfully Prepared<br/>";
}
catch(PDOException $e){
$data['error'] = "Prepare Failed: ".$e->getMessage();
return $data;
}
if(!$stmt){
$data['error'] = "Query Failed";
return $data;
}
try{
if($placeholders){
$stmt->execute($placeholders);
}
else{
$stmt->execute();
}
$data['count'] = $stmt->rowCount();
if($letter === "S"){
if($data['count'] > 1){
$data['result'] = $stmt->fetchAll();
}else{
$data['result'][] = $stmt->fetch();
}
}
}
catch(PDOException $e){
$data['error'] = 'Connection failed: ' . $e->getMessage();
}
return $data;
}
解决方案
推荐阅读
- google-apps-script - 谷歌表格 - 电子邮件
- android - xamarin:谷歌播放中的 64 位警告
- reactjs - 如何修复 Material-UI 对话框文本字段焦点错误?
- python-3.x - 在 sympy 中用可变指数展开多项式
- docker - 有 Kubernetes/Docker 的有状态容器可能吗?
- java - 以角度替代 request.header
- spring - 如何使用 Spring Data Jpa 或 Hibernate 实现 ALTER TABLE 查询
- python - 如果按顺序构建模型,是否需要 tensorflow shuffle 和 batch?
- android - java.lang.String com.google.firebase.auth.FirebaseUser.getEmail()' 在空对象引用上
- python - str 和 int 的实例之间不支持类型错误“<”