MYSQLI / PHP: num_rows returns nothing/null
MYSQLI / PHP: num_rows returns nothing/null
我读过很多有同样问题的话题,但没有一个能解决我的问题。
我有以下代码:
$connection = mysqli_connect('...');
if(mysqli_connect_errno()) {
die('Connect Error');
}
$connection->set_charset("utf8");
$success = $connection->query("INSERT INTO hilde_entrys (Comment, Refer_ID, Account_Adress) VALUES ('".$_POST["comment"]."','".$GET["id"]."','".$userData["user_address"]."')");
$success->store_result(); //I did this as it helped some people - it didn´t help me :(
$rows = $success->num_rows;
while($row = $success->fetch_row()) { //This whole while-loop helped some other guy on Whosebug - not me
$rows = $success->num_rows; //Incrementing by 1 each time
}
$rows = $success->num_rows; // Finally the total count
if ($rows > 0) { //What I actually intended to do with the num_rows...
$success->free();
$success->close();
$connection->close();
} else {
$success->free();
$success->close();
$connection->close();
die("Query failed.");
}
不知何故,即使我尝试了所有可能的方法,它也不会 return 任何预期的东西。 (是的,查询和其他一切都有效。我试过了。)。怎么了?
提前感谢您的所有回答,
维克工作室
哦,顺便说一句:即使我删除 $success->free();
它也不会改变 num_rows
的任何内容......
编辑:在你们告诉我 INSERT
不会 return 任何行之后,我如何检查查询是否成功?
再编辑:首先,有人告诉我使用 affected_rows 而不是 num_rows,我完全可以理解。不知何故,它仍然不起作用,所以你们中的一个要求我在我的 php-脚本中激活错误报告,现在我得到了以下 两个 错误消息(一个通知和一个致命错误):
注意:试图在第XX行
上获取(我的网页)中的非对象属性
致命错误:在第 XX 行(我的网页)的非对象上调用成员函数 close()
该通知涉及行 $rows = $success->affected_rows;
(我用此替换了 $rows = $success->num_rows
)。 (我评论了 while-loop)。
第二个错误导致屏幕变成空白,它指的是 else 子句中的 $success->close();
。这意味着
a) 它没有检测到某些内容已更改并且
b) 我关闭查询时遇到问题。
有人可以向我解释为什么吗?我检查了我的数据库,插入查询成功了,因此它应该在 if 中,而不是在 else 中。为什么它不希望我关闭查询?我假设这两个错误彼此有关。提前致谢,伙计们。很抱歉在我的新 post 之间花了很长时间,但是弄清楚东西需要时间,尤其是把它写下来。
对于插入,您应该使用 affected_rows $rows = $success->affected_rows;
PHP affected_rows
在此处阅读有关 num_rows 的信息 PHP num_rows
作为 mysqli_query()
运行 INSERT 查询仅返回 TRUE 或 FALSE 那么您的 $success
将永远不会像 [=] 中那样成为 mysqli_result
对象37=]查询。
因此,您对 affected_rows
的测试应该像这样使用连接对象。事实上 affected_rows
属性 甚至只存在于 mysqli_object.
$connection->affected_rows;
所以
$connection = mysqli_connect('...');
if(mysqli_connect_errno()) {
die('Connect Error');
}
$connection->set_charset("utf8");
$success = $connection->query("AN INSERT QUERY");
$rows = $connection->affected_rows;
The PHP manual aint great in this area I admit, but it does state this
这也解释了为什么
$success->free();
$success->close();
不工作,因为 $success
不是对象。
还有为什么
$success->store_result();
不起作用。 $success
不是对象,没有要存储的结果。
我读过很多有同样问题的话题,但没有一个能解决我的问题。
我有以下代码:
$connection = mysqli_connect('...');
if(mysqli_connect_errno()) {
die('Connect Error');
}
$connection->set_charset("utf8");
$success = $connection->query("INSERT INTO hilde_entrys (Comment, Refer_ID, Account_Adress) VALUES ('".$_POST["comment"]."','".$GET["id"]."','".$userData["user_address"]."')");
$success->store_result(); //I did this as it helped some people - it didn´t help me :(
$rows = $success->num_rows;
while($row = $success->fetch_row()) { //This whole while-loop helped some other guy on Whosebug - not me
$rows = $success->num_rows; //Incrementing by 1 each time
}
$rows = $success->num_rows; // Finally the total count
if ($rows > 0) { //What I actually intended to do with the num_rows...
$success->free();
$success->close();
$connection->close();
} else {
$success->free();
$success->close();
$connection->close();
die("Query failed.");
}
不知何故,即使我尝试了所有可能的方法,它也不会 return 任何预期的东西。 (是的,查询和其他一切都有效。我试过了。)。怎么了?
提前感谢您的所有回答,
维克工作室
哦,顺便说一句:即使我删除 $success->free();
它也不会改变 num_rows
的任何内容......
编辑:在你们告诉我 INSERT
不会 return 任何行之后,我如何检查查询是否成功?
再编辑:首先,有人告诉我使用 affected_rows 而不是 num_rows,我完全可以理解。不知何故,它仍然不起作用,所以你们中的一个要求我在我的 php-脚本中激活错误报告,现在我得到了以下 两个 错误消息(一个通知和一个致命错误):
注意:试图在第XX行
上获取(我的网页)中的非对象属性
致命错误:在第 XX 行(我的网页)的非对象上调用成员函数 close()
该通知涉及行 $rows = $success->affected_rows;
(我用此替换了 $rows = $success->num_rows
)。 (我评论了 while-loop)。
第二个错误导致屏幕变成空白,它指的是 else 子句中的 $success->close();
。这意味着
a) 它没有检测到某些内容已更改并且
b) 我关闭查询时遇到问题。
有人可以向我解释为什么吗?我检查了我的数据库,插入查询成功了,因此它应该在 if 中,而不是在 else 中。为什么它不希望我关闭查询?我假设这两个错误彼此有关。提前致谢,伙计们。很抱歉在我的新 post 之间花了很长时间,但是弄清楚东西需要时间,尤其是把它写下来。
对于插入,您应该使用 affected_rows $rows = $success->affected_rows;
PHP affected_rows
在此处阅读有关 num_rows 的信息 PHP num_rows
作为 mysqli_query()
运行 INSERT 查询仅返回 TRUE 或 FALSE 那么您的 $success
将永远不会像 [=] 中那样成为 mysqli_result
对象37=]查询。
因此,您对 affected_rows
的测试应该像这样使用连接对象。事实上 affected_rows
属性 甚至只存在于 mysqli_object.
$connection->affected_rows;
所以
$connection = mysqli_connect('...');
if(mysqli_connect_errno()) {
die('Connect Error');
}
$connection->set_charset("utf8");
$success = $connection->query("AN INSERT QUERY");
$rows = $connection->affected_rows;
The PHP manual aint great in this area I admit, but it does state this
这也解释了为什么
$success->free();
$success->close();
不工作,因为 $success
不是对象。
还有为什么
$success->store_result();
不起作用。 $success
不是对象,没有要存储的结果。