MySql/PHP插入集Last_Insert_ID()
我有以下PHP代码MySql/PHP插入集Last_Insert_ID(),php,mysql,sql,Php,Mysql,Sql,我有以下PHP代码 $con = mysqli_connect($host, $user, $password, $database) or die ("Couldn't connect to database"); //assume these variables are declared $sql = "INSERT INTO Users ( FirstName ,MiddleName ,LastName
$con = mysqli_connect($host, $user, $password, $database) or die ("Couldn't connect to database"); //assume these variables are declared
$sql = "INSERT INTO Users
(
FirstName
,MiddleName
,LastName
)
Values
(
'John'
,'A'
,'Smith'
);
SET @petID = LAST_INSERT_ID();
INSERT INTO Pets
(
UserID
,Name
)
Values
(
@petID
,'myPet'
);";
if(!mysqli_query($con, $sql))
{
die('Error: ' . mysqli($con));
}
mysqli_close($con);
当我尝试执行此代码时,会发生以下错误:
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET @petID = LAST_INSERT_ID(); INSERT INTO Pets ( UserID ,Name ' at line 24
为了测试mySql语法是否有错误,我将字符串放在一个文件中,并使用以下命令直接运行它:mySql-u root-p myDatabase
thestatement执行时没有任何问题
我的PHP代码有什么问题?在PHP中,不能在一个
query()
调用中运行多个查询。这是一种针对某些形式的SQL注入攻击的过于简单的安全机制。这是内置在mysql PHP驱动程序中的,您无法绕过它。复制查询字符串并单独运行时,它会正常运行,因为命令行工具不受相同限制的约束
您必须单独运行查询:
$result = mysqli_query('INSERT ...');
$result = mysqli_query('SELECT @petID = ...');
$result = mysqli_query('INSERT ....');
在PHP中,不能在一个
query()
调用中运行多个查询。这是一种针对某些形式的SQL注入攻击的过于简单的安全机制。这是内置在mysql PHP驱动程序中的,您无法绕过它。复制查询字符串并单独运行时,它会正常运行,因为命令行工具不受相同限制的约束
您必须单独运行查询:
$result = mysqli_query('INSERT ...');
$result = mysqli_query('SELECT @petID = ...');
$result = mysqli_query('INSERT ....');
在调用
mysqli\u query
时,不能执行多个SQL查询。如果要执行多个查询,请逐个发送查询或使用mysqli\u多查询调用mysqli\u查询
时不能执行多个SQL查询。如果要执行多个查询,请逐个发送查询,或者使用mysqli\u multi\u query
出于安全目的,mysqli不会执行多个查询;您需要mysqli\u多\u查询:
出于安全目的,MySQLi不会执行多个查询;您需要mysqli\u多\u查询:
petID的范围是如何工作的?如果我执行查询来设置petID,下面的mysqli\u查询
是否能够获取它?@petID的范围如何工作
?如果我执行一个查询来设置petID,下面的mysqli\u查询
是否能够获取它?