我看了看select from mysql db with 300 tables using a default prefix,但我还是不明白。
这是我的问题:数据库有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'有人能帮我吗?
发布于 2011-12-05 12:06:15
试试这个:
for($k = 1; $k <= $x; $k++){
$sql5 = "SELECT *
FROM pbtest0" . $k . "
WHERE id = '930820105627'
";
...
}CONCAT()是一个MySQL函数,您需要用PHP构建表名。
发布于 2011-12-05 12:07:09
不能使用CONCAT()作为表名。相反,只需使用PHP字符串连接或字符串插值来构建字符串。
发布于 2011-12-05 12:10:35
您指定的数据库不正确。试试这个:
"SELECT * FROM 'pbtest0".$k."' WHERE id='930820105627'"这将在正确的字符串两边加上单引号,删除不需要的CONCAT()函数。
https://stackoverflow.com/questions/8380873
复制相似问题