Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 这个代码有什么问题?选择计数和位置?_Php_Mysql_Count_Rows - Fatal编程技术网

Php 这个代码有什么问题?选择计数和位置?

Php 这个代码有什么问题?选择计数和位置?,php,mysql,count,rows,Php,Mysql,Count,Rows,对于这种类型的代码,我有where questionId=$id语句,它会给我一个未定义索引id的错误,而mysqli_error()正好需要一个参数。我看到了很多时间,不知怎么我解决了一个问题,但现在我真的没有。我是新来的,还在学习,但我真的不知道。如果我删除这个WHERE questionId=$id它正在工作,它会显示它在那里有多少行,但我需要这个WHERE语句,它可以显示我在哪里,具体id有多少条记录。有两个问题和两个答案 首先,您需要定义$id。在页面的任何位置都没有定义它。如果您正在

对于这种类型的代码,我有
where questionId=$id
语句,它会给我一个未定义索引id的错误,而mysqli_error()正好需要一个参数。我看到了很多时间,不知怎么我解决了一个问题,但现在我真的没有。我是新来的,还在学习,但我真的不知道。如果我删除这个
WHERE questionId=$id
它正在工作,它会显示它在那里有多少行,但我需要这个WHERE语句,它可以显示我在哪里,具体id有多少条记录。

有两个问题和两个答案

首先,您需要定义
$id
。在页面的任何位置都没有定义它。如果您正在发布或获取变量,则应使用:

<?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); 
?>

取决于它的get还是post

您还应该清理来自用户的任何输入,永远不要接受它。最好的方法之一就是过滤它

$id = $_GET['id'];
如果ID中不包含int,则返回整数或
FALSE


第二个问题是您的
mysqli\u错误()。您需要传入资源链接,因此它应该是:

$id = filter_input(INPUT_POST, "id", FILTER_VALIDATE_INT);
如上所述,您可能有一个不同的PHP配置,其中
request
数据是自动预定义的。通常,您需要自己定义
$id

$query = mysqli_query($db_connection, $sqlCommand) or die (mysqli_error($db_connection));

问题的类型是什么?但是,您在哪里定义特定id
$id
?您必须传递
$id
参数进行查询。您需要定义$id。如果与POST类型表单一起使用,且命名元素称为“id”,则需要添加
$id=$\u POST['id']
-如果是GET方法,则使用
$id=$\u GET['id']作为示例。在您的情况下,根据查询,它可能类似于
$id=$\u POST['question']祝你好运。直到我知道整个画面是什么样子,我才给出答案@Fred ii-您可以随时编辑答案。这看起来很明显是什么问题。没错,但我只有在绝对肯定的情况下才编辑。在这种情况下,OP没有指定
$id
的来源。我在黑暗中是一个可怕的杀手谢谢你的提醒。但是,您的
[id]
必须是
['id']
;-)根据OP的定义,
$id
可以被称为
listaOdgovora
。但是我会坐下来等待这个结果。感谢您注意到这一点,但这不是一个要求,更像是一个良好实践的建议。通常最好用引号括起来,除非它是一个数组。如果不这样做,它可以被视为一个数组。@dainisaols如果不这样做,它会抛出一个通知
使用未定义的常量,假定id
,因此实际上是必需的。
$query = mysqli_query($db_connection, $sqlCommand) or die (mysqli_error($db_connection));
<?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); 

?>