我正在尝试编写一个应该接收任何MySQL语句并应用它的函数,
基本思路不是重复编写数据库所需的代码,连接数据库所需的是创建新的PDO对象,启动事务并准备语句,将值绑定到它,执行它,
因此,每次我想访问数据库时,我都不必重复这些步骤,
这是一个执行此操作的函数:
=============================================== ===============================================
protected function applyQuery($statement, $bindparameters , &$values , $selectStatement, &$result){
try{
$dbh = DataBase::setConnection();// new PDO("MySQL= .....");
$dbh->beginTransaction();
$stmt = $dbh->prepare($statement);
if($bindparameters == true){
foreach($values as $key => $value){
$stmt->bindValue($key, $value);
}
}
$stmt->execute();
$dbh->commit();
if($selectStatement == TRUE){
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
}catch (PDOException $e){
$dbh->rollBack();
throw DataBase::$Errors[0];
}
}
=============================================== =============================================
$ statement =所需语句(例如' SELECT *来自用户WHERE username =:username')///
$ bindparameters =我们需要绑定值(在此示例中为yes),因此其值为TRUE ///
在这种情况下,& $ values =引用数组equals =(':username' =>' User'); ///
$ selectStatement =告诉是否在语句中使用SELECT,在这种情况下为TRUE ///
在这种情况下,$ result = array by reference,最终的获取结果将存储在其中///
所以在这个例子中我们得到以下对函数的调用: applyQuery(&#39; SELECT *来自用户WHERE username =:username&#39;,TRUE,array(&#39;:username&#39; =&gt;&#39; User&#39;),TRUE,result)< / p>
我的问题是:这段代码会起作用吗? 它是什么,应该有意义的逻辑顺序? 什么是$ stmt-&gt;执行和$ dbh-&gt; commit之间的区别? 省略任何一行都会导致无法达到预期效果
请理解我确实查找了什么是PDO并阅读了很多但无法回答这些问题!