我正在尝试执行一个查询,该查询将选择不在数组中的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中给出的布尔值
看着准备好的陈述,我看不出它会出错的地方?
答案 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>