我正在尝试将这些PDO样式语句转换为mysqli,并且我已经完成了很多其他代码,但我仍然坚持这一点。
它在PDO脚本中工作,但我不确定如何更改这些。
我知道我可以使用mysqli_query来执行,但因为我在这些($ values和$ values2)中使用绑定参数,所以我不确定这样做的正确方法。我意识到我可以删除我的准备语句但是如何使用$ 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);
答案 0 :(得分:2)
首先,mysqli和PDO之间没有明显的速度差异。 MySQL服务器执行查询所花费的时间比一个客户端API与另一个客户端API之间的任何细微差别重要得多。客户端API的选择不会影响服务器上的执行时间。
Mysqli不接受mysqli_stmt :: execute()方法的参数。您必须使用mysqli_stmt :: bind_param()逐个绑定变量。这不如使用PDO那么方便,所以我更喜欢使用PDO。
$checkExisting = $MysqlConn->prepare($expiredCheck);
$checkExisting->bind_param('s', $value2);
$existingRslt = $checkExisting->execute();
$result = $existingRslt->get_result();
$count3 = $result->fetch_assoc();