如何使用变量php在for循环中使用select创建字符串

aamkag61  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(308)

我在哪里犯了一个错误,得到了我在下面写的输出?
数组内部是表的名称。
假设这些表中有0行,所以输出值应该是0。

<?php
$g_module =
array(
  'm_b_broadcast_live',
  'm_b_browsing_live',
  'm_e_askfm_likes_live',
  'm_e_facebook_followers_live',
  'm_e_facebook_group_joins_live',
);

for ($i = 0; $i <= 5; $i++) {
  $modules_names = "g_module[$i]";
  $modules_from = '$'.$modules_names;

  $modules_rows = '$g_module_row_'.$i;

  $$modules_rows = mysql_num_rows("SELECT * FROM $$modules_from");
}

echo $g_module_row_1;
echo '</br>';
echo $g_module_row_2;
echo '</br>';
echo $g_module_row_3;
echo '</br>';
echo $g_module_row_4;
echo '</br>';
echo $g_module_row_5;

/* output should be:
0

0

0

0

0

* /

?>
4szc88ey

4szc88ey1#

正如对你问题的评论中所说, mysql_num_rows() 将查询结果作为参数,而不是查询字符串。
另外,你应该使用 mysqli ! 请看这里的文档。
另一个可以简化的方法是避开美元符号,这样就不必将一个与另一个连接起来 $modules_names 再一次。
更正后的代码如下所示:

<?php
$g_module = [
    'm_b_broadcast_live',
    'm_b_browsing_live',
    'm_e_askfm_likes_live',
    'm_e_facebook_followers_live',
    'm_e_facebook_group_joins_live',
];

// you have to create a connection to your database server first
// of course you will have to swap out my placeholders for the actual credentials
$con=mysqli_connect('mysql_server_address_here','username_here','password_here','database_name_here');

for($i=0;$i<=5;$i++){
    $modules_from = "\$g_module[$i]";

    $modules_rows = "\$g_module_row_$i";

    $q=mysqli_query("SELECT * FROM $$modules_from");

    //use mysqli_num_rows instead
    $$modules_rows = mysqli_num_rows($q);
}

// close your connection after you are finished
mysqli_close($con);

echo $g_module_row_1;
echo '</br>';
echo $g_module_row_2;
echo '</br>';
echo $g_module_row_3;
echo '</br>';
echo $g_module_row_4;
echo '</br>';
echo $g_module_row_5;
klr1opcd

klr1opcd2#

<?php
    $g_module =
    array(
        'm_b_broadcast_live',
        'm_b_browsing_live',
        'm_e_askfm_likes_live',
        'm_e_facebook_followers_live',
        'm_e_facebook_group_joins_live',
    );

    foreach($g_module as $table_name){
        $count = mysql_num_rows("SELECT * FROM $table_name");
        echo "<br/>".$count;
    }
?>

我想你应该这样试试。

相关问题