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

发布于 2024-12-19 10:12:27 字数 919 浏览 1 评论 0原文

我查看了 从 300 个表的 mysql 数据库中选择使用默认前缀但我仍然不明白。

这是我的问题: 该数据库有 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'

有人可以帮助我吗?

I looked at select from mysql db with 300 tables using a default prefix but I still don't understand.

Here's my problem:
The database has 5 tables named as pbtest01, pbtest02, pbtest03, pbtest04 and pbtest05. I use the following code to loop the tables:

$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];

but get the following error:

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'

Can someone help me?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

想你只要分分秒秒 2024-12-26 10:12:27

试试这个:

for($k = 1; $k <= $x; $k++){

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

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

Try this:

for($k = 1; $k <= $x; $k++){

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

CONCAT() is a MySQL function, and you need to build the table names in PHP.

云朵有点甜 2024-12-26 10:12:27

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

You can't use CONCAT() for a table name. Instead, just build the string with PHP string concatenation or string interpolation.

心的憧憬 2024-12-26 10:12:27

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

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

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

You're specifying your database incorrectly. Try this:

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

This will put the single quotes around the correct string remove the unneeded CONCAT() function.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文