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
Mysql 行数不起作用?_Mysql - Fatal编程技术网

Mysql 行数不起作用?

Mysql 行数不起作用?,mysql,Mysql,我有一个MySQL数据库,但我的功能不起作用。我想知道我的数据库查询得到了多少结果,但我什么也没有得到,甚至没有得到0。我还尝试了$values->num\u行;同样的结果。不要回一个号码。。。没什么 我的代码: $values = $database->query("SELECT * FROM `wp_all_import_xml` WHERE name = '$title' AND price = '$price' AND shop = '$shop' AND link = '$lin

我有一个MySQL数据库,但我的功能不起作用。我想知道我的数据库查询得到了多少结果,但我什么也没有得到,甚至没有得到0。我还尝试了$values->num\u行;同样的结果。不要回一个号码。。。没什么

我的代码:

$values = $database->query("SELECT * FROM `wp_all_import_xml` WHERE name = '$title' AND price = '$price' AND shop = '$shop' AND link = '$link'");

$count_values = mysqli_num_rows($values);

echo "ERROR by detecting Product (More than 1 Row return by SQL!): " .$title. " Preis: " .$price. " Shop: " .$shop. " Link: " .$link. "\t num_rows: " .$count_values. "\n";
如何获取返回的行数


问候语

mysqli_num_rows函数确实有效

对观察到的行为最可能的解释是错误正在发生并被忽略

要对此进行调试,请首先确保启用了错误报告

修改代码以检查查询返回的内容。通过执行条件测试,验证它没有返回FALSE

if ($values = $mysqli->query(...) ) {
   // query returned a resultset
} else {
   // query returned FALSE
}
如果我们只需要检索行数,那么我们可以在选择列表中使用COUNT*

if ( $res = $mysqli->query("SELECT COUNT(*) AS cnt FROM ... ") ) {
如果查询成功,那么即使计数为零,我们也会返回一行。我们可以像处理其他查询的结果一样轻松地处理结果,而不需要处理num_行,也不用担心查询是缓冲的还是非缓冲的,等等

我们将假设$database是一个mysqli连接,而不是一个PDO连接,因为代码包含对mysqli_num_rows函数的调用。如果是PDO连接,则num_行不起作用

问题中的代码遵循代码中常见的易受SQL注入攻击的模式。在本摘录中,我们无法确定SQL文本中包含的变量值是否具有潜在的不安全性,因此我们无法判断它是否易受攻击

如果这是一个带有绑定占位符的准备好的语句,那么我们就可以知道了。
将准备好的语句与绑定占位符一起使用。这并不难。

打开错误报告。不返回任何内容是否意味着您的echo语句成功运行,但$count\u values变量为空?其他变量是什么?具体发生了什么?您的代码对SQL注入开放,因此我们甚至不知道您实际执行的SQL语句。是的,我没有显示值…-但是SQL语句并不重要。。。即使我的SQL语句错误,我也应该返回0…@Jan如果SQL查询出错,$values将为false,这不是mysqli_num_rows的有效参数。我们可以整天猜测而不看到错误消息。我已经得到了解决方案。我得到一个错误。我现在的问题是,如果没有发现任何错误,或者当其他错误出现时,我是否会返回错误?因为我在phpMyAdmin中手动检查了该值,并且在那里我为成功执行并返回空结果的SELECT queryA查询返回了一个值。对于MySQL、SQL、mysqli来说,执行返回零行的查询是完全有效的。结果集将为空。这是正确的。如果您希望实际获取具有计数的行,则使用SELECT count*查询。这通常比将一个大的结果集返回给客户端更有效。我现在用$database->error检查了查询,得到了我的错误。使用了错误的行名称!