>我在下面有查询:
$r = "Query goes here...";
$r = conn::execq($q);
while($fetch = mysqli_fetch_array($r)) {
$q = "Query goes here..."; //The $fetch value above is inserted here as 'WHERE' clause
$r = conn::execq($q); //--> The problem
$r = mysqli_fetch_row($r);
if($r > 0) print "ok<br/>";
else print "failed<br/>";
}
在类"conn"函数"execq"中:
public static function execq($q) {
$dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME) OR die ('Could not connect to MySQL: ' . mysqli_connect_error());
$r = mysqli_query($dbc, $q);
mysqli_close($dbc);
return $r;
}
execq 函数在循环后不会调用。第一个查询已成功执行,然后第二个查询正在执行。经过一些循环后,查询被停止以调用函数"conn::execq"。有什么想法吗?谢谢。。
---编辑---
conn:openconn(); //Open connection
$r = "Query goes here...";
$r = conn::execq($q);
while($fetch = mysqli_fetch_array($r)) {
$q = "Query goes here..."; //The $fetch value above is inserted here as 'WHERE' clause
$r = conn::execq($q); //--> The problem
$r = mysqli_fetch_row($r);
if($r > 0) print "ok<br/>";
else print "failed<br/>";
}
conn:closeconn(); //Close connection
在"conn"类中:
public static function openconn() {
global $dbc;
$dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME) OR die ('Could not connect to MySQL: ' . mysqli_connect_error());
}
public static function closeconn() {
mysqli_close($dbc);
}
public static function execq($q) {
$r = mysqli_query($dbc, $q);
return $r;
}
现在我得到了:
Notice: Undefined variable: dbc in ...
Warning: mysqli_error() expects parameter 1 to be mysqli, null given in ...
- 您在很短的时间内多次打开和关闭数据库连接;这是非常低效的。继续重用一个打开的连接!
- 您正在尝试在资源连接已关闭后对资源使用
mysqli_fetch_row
。这根本不应该起作用。 - 您正在覆盖循环中的资源
$r
,因此while
条件中的资源$r
将不会再产生任何结果,并且迭代结束。 - 您应该尝试进行一个稍微复杂的 SQL 查询来获取所需的信息,而不是通过循环访问第一个查询的结果来生成越来越多的查询。数据库通常可以为您完成比您想象的更多的工作。