【发布时间】:2018-12-13 22:05:17
【问题描述】:
我在 MySQL 中有 3 个表:
国家
语言
country_language(它有另外 2 个表的 id)
我想将name 和description 插入country 表,将country id 和langid 插入country_language 表。
我该怎么做?
它在更新部分工作,但是当我想添加一个新国家时,它没有将 2 个 id 插入 country_language,只是名称和描述。
php
$name = mysqli_real_escape_string($connect, $_POST["name"]);
$description = mysqli_real_escape_string($connect, $_POST["description"]);
$id=$_POST["country_id"];
if($id != '')
{
// Update query
$message = 'Data Updated';
}
else
{
mysqli_query($connect, "START TRANSACTION");
mysqli_query($connect, "INSERT INTO country(name, description) VALUES('$name', '$description')");
if(is_array($_POST["language"])) {
$values = Array();
foreach($_POST["language"] as $c2_id) $values[] = "($id, $c2_id)";
mysqli_query($connect, "INSERT INTO country_language(country_id, language_id) VALUES ".implode(",", $values));
}
mysqli_query($connect, "COMMIT");
$message = 'Data Inserted';
}
【问题讨论】:
-
您对 SQL 注入持开放态度:您不得在查询中使用原始用户输入。查看准备好的语句
-
the manual 对这么多人来说是个谜
-
请查看 PHP PDO 和准备好的语句。这种编码现在太过时了。
-
使用多个逗号分隔值列表不是标准 SQL,并且与执行单独查询相比并没有任何好处。如果您进行常规插入,那么代码看起来会更干净且更便携。还要检查您的
$_POST数组以确保$_POST["language"]确实是一个数组