【问题标题】:Problems with multiple mySQL inserts多个 mySQL 插入的问题
【发布时间】:2012-07-17 17:58:23
【问题描述】:

我正在构建一个简单的 cms,并尝试在用户注册时自动在数据库中创建一个附加项。代码工作得很好,第一个插入行,但是一旦我添加了第二个,它就停止工作了。我从 StackOverflow 获得了这个代码结构,我查看了其他网站,它似乎是正确的,但对于我的生活,我无法弄清楚什么是错的。有什么建议吗?

$registerquery = mysql_query("BEGIN
INSERT INTO users (Username, Password, EmailAddress) 
VALUES ('".$username."', '".$password."', '".$email."')
INSERT INTO pages (page_title, page_owner) 
VALUES ('My New Page', LAST_INSERT_ID())
COMMIT");

【问题讨论】:

  • 请对SQL注入攻击做一些研究。
  • 你不能这样做。每个数据库调用一个语句。如果您需要它们作为事务的一部分,请在完成后对 BEGINCOMMIT/ ROLLBACK 进行数据库调用(假设您使用的是支持事务的引擎)

标签: mysql content-management-system last-insert-id


【解决方案1】:

您不能使用 PHP 中的 MySQL 驱动程序在单个 query() 调用中发出两个查询。这是针对某些形式的SQL injection 攻击的安全措施 - 您的代码容易受到攻击(除非您之前正在执行 mysql_real_escape_string() 或类似的操作)。

您还缺少一个 ; 来分隔两个查询。

多查询语法是

query1; query2; query3; etc...

你基本上得到了

query1 query2

这只是一个语法错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    相关资源
    最近更新 更多