0

我有以下查询:

$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 ...
4

1 回答 1

2
  1. 您在很短的时间内多次打开和关闭数据库连接;这是非常低效的。继续重用一个打开的连接!
  2. 您正在尝试在其连接已关闭mysqli_fetch_row使用该资源。这根本不应该工作。
  3. 您正在覆盖$r循环内的资源,因此$r您的while条件中的资源将不再产生任何结果并且迭代结束。
  4. 您应该尝试创建一个稍微复杂的 SQL 查询来获取您想要的信息,而不是通过循环第一个查询的结果来生成越来越多的查询。数据库通常可以为您做的工作比您想象的要多得多。
于 2012-08-10T06:02:24.880 回答