我正在尝试将这些 PDO 样式语句转换为 mysqli,并且我已经完成了很多其他代码,但我陷入了这一点。
它在 PDO 脚本中工作,但我不确定如何更改它们。
我知道我可以使用 mysqli_query 来简单地执行,但是因为我在这些($values 和 $values2)中使用绑定(bind)参数,所以我不确定执行此操作的正确方法。我意识到我可以删除我的准备语句,但如何使用 $values 和 $values2 参数执行查询?
我只是想在它和 PDO 之间进行速度比较,所以我不需要讨论哪个更好或者为什么我不应该将它们转换为 mysqli,我只是不知道到底如何去做吧
$insert = $MysqlConn->prepare($insertPlacement);
$insert = $MysqlConn->prepare($insertPlacement);
$update = $MysqlConn->prepare($updatePlacement);
//Array will contain records that are expired
$checkExisting = $MysqlConn->prepare($expiredCheck);
$existingRslt = $checkExisting->execute($values2);
$count3 = mysqli_fetch_assoc($checkExisting);
//Array will contain records that are valid
$checkExistingValid = $MysqlConn->prepare($validCheck);
$existingVldRslt = $checkExistingValid->execute($values2);
$count4 = mysqli_fetch_assoc($checkExistingValid);
// IF records do not exist, or records exist and today is after expiration date
if(empty($count3) && empty($count4)){
print_r("Inserting");
for($i=0; $i<$row2["QUANTITY"]; $i++) {
$insertRslt = $insert->execute($values);
}
}elseif(!empty($count3)){
print_r("Inserting");
for($i=0; $i<$row2['QUANTITY']; $i++){
$insertRslt = $insert->execute($values);
}
}elseif(!empty($count4)){
print_r("updatin");
for($i=0; $i<$row2['QUANTITY']; $i++){
$updateRslt = $update->execute($values);
最佳答案
首先,mysqli和PDO之间没有显着的速度差异。 MySQL 服务器执行查询所花费的时间比一个客户端 API 与另一个客户端 API 之间的任何细微差异都要重要得多。客户端API的选择不会影响服务器上的执行时间。
Mysqli 不接受 mysqli_stmt::execute() 方法的参数。您必须使用 mysqli_stmt::bind_param() 一一绑定(bind)变量。这不如使用 PDO 方便,所以我更喜欢使用 PDO。
$checkExisting = $MysqlConn->prepare($expiredCheck);
$checkExisting->bind_param('s', $value2);
$existingRslt = $checkExisting->execute();
$result = $existingRslt->get_result();
$count3 = $result->fetch_assoc();
关于php - 在 mysqli 中带参数执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49198948/