(菲律宾比索)为什么经过一些循环,函数不再调用


(PHP) Why after some looping, the function doesn't called anymore?

>我在下面有查询:

$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 ...
  1. 您在很短的时间内多次打开和关闭数据库连接;这是非常低效的。继续重用一个打开的连接!
  2. 您正在尝试在资源连接已关闭对资源使用 mysqli_fetch_row。这根本不应该起作用。
  3. 您正在覆盖循环中的资源$r,因此while条件中的资源$r将不会再产生任何结果,并且迭代结束。
  4. 您应该尝试进行一个稍微复杂的 SQL 查询来获取所需的信息,而不是通过循环访问第一个查询的结果来生成越来越多的查询。数据库通常可以为您完成比您想象的更多的工作。