PHP查询implode - 数组到字符串转换错误

时间:2018-03-14 17:09:13

标签: php mysqli

我正在尝试执行一个查询,该查询将选择不在数组中的question_id值的问题。我看到你应该使用implode将数组转换为字符串,但是尽管我使用它,但在执行查询时仍然会出错。

  

注意:C:\ xampp \ htdocs \ Project \ test.php中的数组到字符串转换   第4行

<?php
    require_once 'includes/config.php';
    $used = implode(',',array(0, 1, 2, 3, 4, 5, 6));    
    $sql = "SELECT * FROM questions WHERE module_id = ? AND (question_id NOT IN ('$used') ORDER BY RAND()"; 
    $stmt = mysqli_prepare($connect, $sql);
    mysqli_stmt_bind_param($stmt, "i", $_SESSION['module_id']);
    mysqli_stmt_execute($stmt);
?>
<form method="POST" action="test.php">

    <button type="submit" name="submit">Submit</button>

</form>

编辑:将内爆函数移动到一个单独的变量中解决了sql查询,但是现在我遇到了这些错误:

  

警告:mysqli_stmt_bind_param()期望参数1为   mysqli_stmt,在C:\ xampp \ htdocs \ Project \ testy.php中给出的布尔值   第8行

     

警告:mysqli_stmt_execute()期望参数1为mysqli_stmt,   第9行的C:\ xampp \ htdocs \ Project \ testy.php中给出的布尔值

看着准备好的陈述,我看不出它会出错的地方?

1 个答案:

答案 0 :(得分:0)

这是因为你没有调用内爆函数。它的内部报价。 试试这个它会工作得很好

<?php
    require_once 'includes/config.php';
    $used = implode(',',array(0, 1, 2, 3, 4, 5, 6));    
    $sql = "SELECT * FROM questions WHERE module_id = ? AND (question_id NOT IN ($used) ORDER BY RAND()";
    $stmt = mysqli_prepare($connect, $sql);
    mysqli_stmt_bind_param($stmt, "i", $_SESSION['module_id']);
    mysqli_stmt_execute($stmt);
?>
<form method="POST" action="test.php">

    <button type="submit" name="submit">Submit</button>

</form>