【发布时间】:2013-11-23 18:16:47
【问题描述】:
我正在尝试插入到 mySql 表中,表名是 sql select 查询的结果,第一个查询返回正确的结果,但第二个查询似乎是错误所在,任何帮助都会非常非常非常感谢
$query = mysql_query("SELECT council from users where username = '$username'");
$x = mysql_result($query,0, "council");
$councilArea = (string)$x;
// mysql inserting a new row
$result = mysql_query("INSERT INTO '$councilArea' ('barcode', 'productname', 'bin', 'info', 'addedby') VALUES('$barcode', '$productname', '$bin', '$info', '$username')");
【问题讨论】:
-
单引号引起的错误
'$councilArea'和所有列名如'barcode'请参阅stackoverflow.com/questions/11321491/…。不应引用表名和列名(除非它们是保留字,需要反引号) -
但这也说明你的数据库设计存在更大的问题。与其存储保存相关信息的表的 name,不如将列存储在作为外键的单个表中。换句话说,你的设计意味着你有几个相似的表,而你应该有一个表,其中包含一个可以执行连接查询的不同列。
-
这是 JSON 响应的一部分,它继续执行 if 语句检查结果是否已填充,如果没有,则返回不成功,每次都返回不成功并且数据库中没有填充任何内容。
-
最后,查看how can I prevent SQL injection in PHP。您使用已弃用的
mysql_*()扩展名可能不安全。 -
@Michael 对不起,我在答案中写了你在评论中输入的内容,但我没有复制到你的 cmets 上,