【问题标题】:PHP and mysqli: Select with multiple conditions using prepared statementsPHP 和 mysqli:使用准备好的语句选择多个条件
【发布时间】:2023-03-24 22:12:02
【问题描述】:

我正在使用 mysqli 在 php 文件中使用 InnoDB 上运行的数据库处理一些准备好的语句。大多数语句都运行良好,但是我有一个带有多个条件的 select 语句,它在我的 select 语句中不断返回语法错误,具体来说:在第 1 行接近 ? AND section_num = ? AND dept = ? AND semester = ? AND year = ? 以及以下错误:

Call to a member function bind_param() on a non-object.

这是代码的sn-p:

if (!$rs = $mysqli->query("SELECT id FROM courses WHERE course_num = ? AND section_num = ? AND dept = ? AND semester = ? AND year = ?")) {
        echo "Select Query Failed!: (" . $mysqli->errno . ") ". $mysqli->error;
    }
    if(!$rs->bind_param("ssssi", mysqli_real_escape_string($mysqli,$course_num), mysqli_real_escape_string($mysqli,$section_num),
        mysqli_real_escape_string($mysqli,$dept), mysqli_real_escape_string($mysqli,$semester), mysqli_real_escape_string($mysqli,$year))) {
        echo "Select Binding parameters failed: (" . $rs->errno .") " . $rs->error;
    }
    if (!$rs->execute()) {
        echo "Execute select failed: (" . $rs->errno . ") " . $rs->error;
    }

任何关于如何形成此语句以根据 4 个输入检索 id 的建议都会很棒。谢谢!

【问题讨论】:

    标签: php select mysqli prepared-statement


    【解决方案1】:

    您应该使用prepare 来准备语句,而不是query,因为它只是执行查询。

    【讨论】:

      【解决方案2】:
      $query = "
      SELECT id 
      FROM courses 
      WHERE 
      course_num = ? AND section_num = ? AND dept = ? AND semester = ? AND year = ?
      ";
      $rs = $mysqli->prepare($query);
      $rs->bind_param("ssssi", $course_num, $section_num, $dept, $semester, $year);
      $rs->execute();
      

      【讨论】:

        【解决方案3】:

        更改:$mysqli->query("SELECT id ... 收件人:$mysqli->prepare("SELECT id ...

        【讨论】:

          【解决方案4】:

          这样做很简单

          $query = "SELECT * FROM `$table_tran` WHERE `$mem_id` ='$member_id' and                         $status` = '$cur_status'";
          $result = mysqli_query($link,$query);
          

          它使用and 语句从事务表中获取数据。

          【讨论】:

            猜你喜欢
            • 2017-05-23
            • 2016-07-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-06-20
            相关资源
            最近更新 更多