<?php
require_once "includes/db_connection.php";
$sqlCommand = "SELECT * FROM table1 WHERE questionId = $id";
$query = mysqli_query($db_connection, $sqlCommand) or die (mysqli_error());
$num_rows = mysqli_num_rows($query);
echo "Tabela sadrzi " . $num_rows . " redova.";
mysqli_free_result($query);
mysqli_close($db_connection);
?>
使用这种类型的代码,我有WHERE questionId = $id
语句,它给我一个错误未定义的索引ID,而mysqli_error()只需要1个参数。我看到很多时间,不知怎的,我解决了一个问题,但现在我真的没有。我是新人,还在学习,但我真的没有想法。如果我删除它WHERE questionId = $id
它正在工作,它会显示它中有多少行,但我需要使用Where语句,它可以显示给我,有多少记录是特定ID。
答案 0 :(得分:0)
有两个问题和两个答案。
首先,您需要定义$id
。它没有在您的页面上的任何位置定义。如果您要发布或获取变量,那么您将使用:
$id = $_POST['id'];
或
$id = $_GET['id'];
取决于其获取还是发布。
您还应该清理来自用户的任何输入,不要只是接受它会没事。最好的方法之一就是过滤它。
$id = filter_input(INPUT_POST, "id", FILTER_VALIDATE_INT);
如果int以外的任何内容都在ID中,那么将返回整数或FALSE
。
第二个问题是你的mysqli_error()
。您需要传递资源链接,因此它应该是:
$query = mysqli_query($db_connection, $sqlCommand) or die (mysqli_error($db_connection));
答案 1 :(得分:0)
正如Fred所说,您可能有不同的PHP配置,其中request
数据是自动预定义的。通常,您需要自己定义$id
:
<?php
require_once "includes/db_connection.php";
# It might be ID or QUESTIONID or something similar
$id = $_POST['id'];
if ( !$id ) $id = $_GET['id'];
/* You can also add ' around your request,
to prevent error when the id is actually not present at all */
$sqlCommand = "SELECT * FROM table1 WHERE questionId = '$id'";
$query = mysqli_query($db_connection, $sqlCommand) or die (mysqli_error());
$num_rows = mysqli_num_rows($query);
echo "Tabela sadrzi " . $num_rows . " redova.";
mysqli_free_result($query);
mysqli_close($db_connection);
?>
在使用之前不要忘记对它们进行消毒以防止sql injections。