首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对两个准备好的语句使用相同的MySql连接

对两个准备好的语句使用相同的MySql连接
EN

Stack Overflow用户
提问于 2014-04-27 17:34:43
回答 2查看 958关注 0票数 0

所以,我的PHP代码出了问题,我试图运行两个已准备好的语句,这些语句都是用同一个$mysqli对象准备的。

代码语言:javascript
复制
        require 'database.php';
        $mysqli = new mysqli($database_host, $database_user, $database_pass, $database_name);

        /*First check if there is already a preference record for this user
          with this particular course.*/
        $query = "SELECT * FROM timetablePrefs WHERE username=? AND courseID=?";
        $stmt = $mysqli->prepare($query);
        foreach ($courseList as $key => $value)
        {
            $stmt->bind_param("ss", $username, $key);
            $stmt->execute();
            if (($stmt->num_rows) === 1)
                continue;
            else
            {
                $query = "INSERT INTO timetablePrefs (username, courseID, hexColour, hidden) ";
                $query .= "VALUES (?, ?, ?, 0)";
                $prepared = $mysqli->prepare($query);
                $prepared->bind_param("sss", $username, $key, "#FFFFFF");
                if (!($prepared->execute()))
                    print("Sorry couldnt change your colour preferences.");
                $prepared->close();
            }
        }
        $stmt->close();
        $mysqli->close();

我可能漏掉了什么东西,你能同时运行两个吗?如有任何帮助,将不胜感激!请提出任何问题;)

我收到的错误与行有关;$prepared->bind_param("sss", $username, $key, "#FFFFFF");致命错误:调用非对象上的成员函数bind_param()

EN

回答 2

Stack Overflow用户

发布于 2014-04-27 17:43:44

  1. 得到实际的错误
  2. 解决这个问题。从错误中可以看出,有来自上一个查询挂起的结果。需要储存它们
票数 1
EN

Stack Overflow用户

发布于 2021-03-24 11:05:01

我是以过程的方式做我的事情,但也有相同类型的issue.So,我创建了两个不同的DB连接变量(只是一个黑客,不合适的解决方案),而不是这样做:

代码语言:javascript
复制
stmt_pnl = mysqli_stmt_init($conn);
stmt_bank = mysqli_stmt_init($conn);

我做了:

代码语言:javascript
复制
stmt_pnl = mysqli_stmt_init($conn);
stmt_bank = mysqli_stmt_init($conn_bank);

这个错误消失了,它起了作用。

编辑:上面的答案只是一个解决问题的黑客,而不是一个实际的解决方案。解决此错误的正确方法是按照以下顺序进行:

  1. 准备语句(初始化和绑定参数)
  2. 执行语句
  3. 获得结果(mysqli_stmt_get_result)
  4. 结束语。

(特别感谢你的常识)

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23326669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档