我有过
$form_store_sql = "
INSERT INTO myodyssey_myaccount (`id`, `email`, `username`, `password`) VALUES (NULL, 'email', 'unixmiah.formtest', 'woohoo');
SET @last_id_in_myaccount = LAST_INSERT_ID();
INSERT INTO myodyssey_personal_info (`id`, `myodyssey_myaccount_id`) VALUES (NULL, @last_id_in_myaccount);
SET @last_id_in_personal_info = LAST_INSERT_ID();
INSERT INTO myodyssey_travel_info (`id`, `myodyssey_personal_info_id`)
VALUES (NULL, @last_id_in_personal_info);
SET @last_id_in_travel_info = LAST_INSERT_ID();
INSERT INTO myodyssey_tour_orders (`id`, `myodyssey_travel_info_id`) VALUES (NULL, @last_id_in_travel_info);";
if(mysql_query($form_store_sql)){
echo "done";
}它不工作;它不存储数据。但是如果我将SQL语句从form_store_variable中取出并粘贴到phpmyadmin的sql对话框中,它的行为就不同了,它存储数据。我想知道我在form_store_variable中存储SQL语句做错了什么。
发布于 2014-09-13 04:20:14
mysql_*() functions do NOT允许在单个query调用中有多个这样的语句。这是对某些形式的SQL注入攻击的基本防御。
如果您在查询调用中使用了任何类型的错误处理,则会被告知语法错误:
$result = mysql_query($form_store_sql);
if ($result === false) {
die(mysql_error());
}您必须分别对这些单独的语句执行query()操作。
发布于 2014-09-13 04:21:43
mysql_query()不允许在单个调用中执行多个查询。您需要为每个查询将$form_store_sql拆分为单独的字符串,并分别为每个查询调用mysql_query()。
$sql = "INSERT INTO myodyssey_myaccount (`id`, `email`, `username`, `password`)
VALUES (NULL, 'email', 'unixmiah.formtest', 'woohoo');";
mysql_query($sql);
$sql = "SET @last_id_in_myaccount = LAST_INSERT_ID();";
mysql_query($sql);
...您还可以通过在下一个insert中使用该函数来避免仅仅为了将变量设置为LAST_INSERT_ID()而进行单独的调用:
$sql = "INSERT INTO myodyssey_personal_info (`id`, `myodyssey_myaccount_id`)
VALUES (NULL, LAST_INSERT_ID());"
mysql_query($sql);https://stackoverflow.com/questions/25816201
复制相似问题