以两种不同方式分配的两个php变量之间的差异

时间:2015-01-02 08:31:50

标签: php mysql

我必须告诉你这是基于一个非常简单的PHP理论,但它并不简单,因为它出现。

这是方案

我有10个表(table_1,table_2,table_3等),目前我想在循环中获取每个表的结果集。所以为了满足我的要求,当我使用下面的代码时,它返回一个错误

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in 

守则

$table_count = mysql_query("SELECT TABLE_NAME FROM information_schema.tables WHERE 
table_schema = 'milepostdb' AND table_name LIKE 'table_%' ");

while($row = mysql_fetch_array($table_count)){
$table = $row["TABLE_NAME"];

$excute = mysql_query("CALL Dummy_2('$table')");
$result = mysql_fetch_assoc($excute);//line which triggers the error
var_dump($result);
} 

但是,如果我只是对表名进行硬编码并将其设置为正常

$var = 'table_1';
$excute = mysql_query("CALL Dummy_2('$var')");
$result = mysql_fetch_assoc($excute);
var_dump($result);

$excute = mysql_query("CALL Dummy_2('table_1')");
$result = mysql_fetch_assoc($excute);
var_dump($result);

以上代码都运作良好。

现在任何正文都可以告诉为什么传递给$table = $row["TABLE_NAME"];的变量在分配的普通变量正常工作时会返回错误。两种方法之间的差异是什么?

1 个答案:

答案 0 :(得分:1)

您需要先阅读第一个查询中的所有结果,然后才能开始另一个查询。

$tables = array();
$table_count = mysql_query("SELECT TABLE_NAME FROM information_schema.tables WHERE 
    table_schema = 'milepostdb' AND table_name LIKE 'table_%' ") or die(mysql_error());

while($row = mysql_fetch_array($table_count)){
    $tables[] = $row["TABLE_NAME"];
}
mysql_free_result($table_count);

foreach ($tables as $table) {
    $excute = mysql_query("CALL Dummy_2('$table')") or die(mysql_error());
    $result = mysql_fetch_assoc($excute);//line which triggers the error
    var_dump($result);
}