我正在处理与我的数据库交互的Php函数,以便为特定用户添加特化。我认为使用mysqli多查询是实现这一目标的最佳方式。不幸的是,查询的代码都没有正确执行。 db连接正在顺利运行,并且在键入我的数据库Web应用程序时可以进行单独查询。
function assign_specialties($id, $specialties) {
$conn = new mysqli($GLOBALS['servername'], $GLOBALS['username'], $GLOBALS['password'], 'visio');
if ($conn->connect_error) {
die("$conn->connect_errno: $conn->connect_error");
}
$query = "";
$id = mysqli_real_escape_string($conn, $id);
foreach ($specialties as $specialty) {
$specialty = mysqli_real_escape_string($conn, $specialty);
$query .= " INSERT INTO member_specialization (member_id, specialization_name) VALUES ('$id', '$specialty');";
}
//$query = mysqli_real_escape_string($conn, $query);
if ($conn->multi_query($query)) {
echo "<script> alert('yes')</script>";
}
else {
echo "<script> alert('$query')</script>";
}
$conn->close();
}
我还有一个分号分隔的每个查询。这是我第一次尝试多次查询,因此我知道它必须是用户错误,我只是无法弄清楚该错误是什么。
答案 0 :(得分:0)
http://php.net/manual/en/mysqli.multi-query.php
应正确转义查询中的数据。
您在整个查询中使用mysqli_real_escape_string(),唯一需要转义的字符串是您的变量$ special。
此外,您在函数中使用过程样式和面向对象样式。无论您喜欢哪种风格,都应该保持一致。
$query = "";
foreach ($specialties as $specialty) {
$specialty = mysqli_real_escape_string($conn, $specialty);
$query .= "INSERT INTO member_specialization
(member_id, specialization_name)
VALUES
('$id', '$specialty');";
}
mysqli_multi_query($conn, $query);