php - 在 mysqli 中带参数执行

标签 php mysql mysqli pdo

我正在尝试将这些 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/

相关文章:

mysql - 一次将 3 次 2 列合并为一个命令中的一个

javascript - 如何在单击嵌套在循环中的按钮时弹出显示模式

php - 在 PHP 和 MySQL 中使用 Flot jquery 插件

php - 在多列上拆分 foreach 循环结果

php - 如何在wordpress中使用$_POST

mysql - SELECTing 非索引列增加 'sending data' 25x - 为什么以及如何改进?

php - 在 MVC 框架中构建模型?

mysql - 添加 GROUP BY 或 DISTINCT 如何给出相同的结果集?

php - 需要从mysql中的2个表中获取数据

php - 找不到简单查询的使用示例并且有问题