我正在尝试编写一个应该接收任何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
=所需的陈述(e.g 'SELECT * from users WHERE username = :username')
$bindparameters
=我们需要绑定值(在此示例中为yes),因此其值TRUE
&$values
=在这种情况下,引用数组为equals = (':username' => 'User');
$selectStatement
=告诉是否在语句中使用SELECT,在本例中为TRUE
$result
=在这种情况下引用数组,最终的获取结果将存储在其中
所以在这个例子中我们得到以下对函数的调用:
applyQuery('SELECT * from users WHERE username = :username', TRUE ,
array(':username' => 'User') , TRUE , result )
我的问题是:这段代码会起作用吗?它是什么,应该有意义的逻辑顺序?什么是$ stmt->执行和$ dbh-> commit之间的区别?省略任何一行都会导致无法达到预期效果
请理解我确实查找了什么是PDO并阅读了很多但无法回答这些问题!