如何循环mysql表的默认前缀使用php


How to loop mysql tables that have default prefix using php

我查看了select from mysql db with 300 tables使用默认前缀,但我仍然不明白。

我的问题是:数据库有5个表,分别命名为pbtest01、pbtest02、pbtest03、pbtest04和pbtest05。我使用以下代码来循环表:

$x = 3;
for($k = 1; $k <= $x; $k++){
  $sql5 = "SELECT *
           FROM CONCAT('pbtest0',$k)
           WHERE id = '930820105627'
           ";
  $data5 = mysql_query($sql5) or die(mysql_error().$sql5);
  $list5 = mysql_fetch_array($data5);
  $var[$k] = $sql5['value'];
}
echo $var[1];
echo $var[2];
echo $var[3];

但是得到以下错误:

You have an error in your SQL syntax; check the manual that corresponds to
your MySQL server version for the right syntax to use near
'CONCAT('pbtest0',1) WHERE id = '930820105627'' at line 1
SELECT *
FROM CONCAT('pbtest0',1)
WHERE id = '930820105627'

有人能帮帮我吗?

试试这个:

for($k = 1; $k <= $x; $k++){
   $sql5 = "SELECT *
            FROM pbtest0" . $k . "
            WHERE id = '930820105627'
            ";
   ...
}

CONCAT()是一个MySQL函数,需要在PHP中构建表名

不能使用CONCAT()作为表名。相反,只需使用PHP字符串连接或字符串插值构建字符串。

指定的数据库不正确。试试这个:

"SELECT * FROM 'pbtest0".$k."' WHERE id='930820105627'"

这将把单引号放在正确的字符串周围,删除不需要的CONCAT()函数。