我需要遍历数据库中的多个表,然后使用其内容填充多维数组。我目前的代码是返回MySQL错误。我试过四处寻找,但我发现的一切都与我的需求不符。
代码
// The arrays that will hold the data we wish to collect
$ids = array();
$data = array();
// The database tables we want to search through
$databaseTables = array("table1", "table2", "table3", "table4");
for ($x = 0; $x < 4; $x++) {
// Create a new array for this table's data
$ids[] = array();
$data[] = array();
// Query the database
$query = "SELECT * FROM '$databaseTables[$x]'";
$result = @mysql_query($query) or die(mysql_error());
// Collect the data
while ($row = mysql_fetch_array($result)) {
$ids[$x][] = $row['id'];
$data[$x][] = $row['data'];
}
}
感谢您的帮助。
修改
MySQL错误:
您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的“table1”附近使用正确的语法
答案 0 :(得分:2)
不要引用表名,而是使用反引号:
$query = "SELECT * FROM `$databaseTables[$x]`";
如果您启用了模式ANSI_QUOTES
,则可以双引号表名称,因为这会导致引号为标识符引号字符(vs字符串引号字符),但默认情况下不会设置。
来源:
顺便说一句,我建议你不再使用mysql_*
函数。在PHP的未来版本中,它们已被弃用,将被删除。请参阅introduction page到mysql。
答案 1 :(得分:1)
您使用的是单引号。在MySQL中,您需要使用反向标记。只要您没有通过MySQL reserved word预期发生任何冲突,您通常也可以退出。
此外,如果您最后有or die
,那么您确实不需要@
错误抑制器。 MySQL函数不打印错误,但如果你在最后添加or die
,你可能想看看会发生什么。删除or die
或删除@
错误抑制器。