当表名存储在变量中时,如何加载数据?

时间:2012-07-11 17:52:18

标签: php mysql mysqli

我想从数据库中的多个CSV文档加载数据。

问题是文件有一个表,因此表名必须存储在循环逐步更新的变量中。表已创建,但之后脚本失败;什么都没发生,我的表和他们的字段总是有0行。

我认为我的想法是可行的,因为有些主题以这种方式描述了一些提示,但在我的案例中没有任何作用。

这是我失败的代码:

$query = "INSERT INTO". $name_of_the_file." (id, content) values (". $arrayGenre[0].",'".trim($arrayGenre[1])."')";  

其中$name_of_the_file是指在循环中创建的表,最终引用循环所针对的文件。


根据您的建议,我添加了一个空格并按以下方式打印查询:

echo ("<br>". $query);

以下是第一行的示例。 xxx替换没有冒犯:这些是主格数据。

INSERT INTO names.csv (id, url, content) values (1,'xxx_some_adressxxx,'agency: xxx')

我不知道PHP是否足以说它是预期的结果,但这似乎是一个很好的SQL请求,而且值很好。

以下是我的剧本的下一行:

$mysqli->query($query);

在我的脚本开头,$mysqli的定义:

$mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);

新编辑:

实际上它的SQL代码写得很糟糕......

1 个答案:

答案 0 :(得分:3)

尝试添加空格:

$query = "INSERT INTO ". $name_of_the_file ...

始终值得通过echo输出您的SQL,以确保它看起来像您期望的那样。

编辑:

INSERT INTO names.csv (id, url, content) values (1,'xxx_some_adressxxx,'agency: xxx')

您需要在第二个字段的末尾添加撇号:

INSERT INTO names.csv (id, url, content) values (1,'xxx_some_adressxxx','agency: xxx')

我还建议你研究像PDO这样的东西,让你的代码更健壮,更安全。

您也可以尝试将SQL直接粘贴到数据库中,看看它是否会给您带来错误。