我正在使用php implode将从输入字段数组中取出的值插入到数据库表列中。这对我来说很好:
$insert_row =mysql_query("INSERT INTO ActivityProduct (Ideal) VALUES (" . implode('),(', $_POST["ideal"]) . ")");
我现在想将从两个不同输入字段数组中获取的值插入到两个数据库表列中。以下代码产生并出错:
$insert_row =mysql_query("INSERT INTO ActivityProduct (AID,Ideal) VALUES (" . implode('),(', $_POST["act"]) . " ," . implode('),(', $_POST["ideal"]) . ")");
我想在insert语句中表达两个数组,例如:(10,21),(20,31),(30,41)而不是(10),(21) ,(20),(31),(30),(41)
关于如何解决这个问题的任何想法,都非常感谢。
答案 0 :(得分:0)
使用这样可以帮助你
$ideal=implode('),(', $_POST["ideal"]);
$act=implode('),(', $_POST["act"]);
$insert_row =mysql_query("INSERT INTO ActivityProduct (Ideal) VALUES (" .mysql_real_escape_string($ideal). ")");
$insert_row =mysql_query("INSERT INTO ActivityProduct (AID,Ideal) VALUES (" .mysql_real_escape_string($ideal). " ," .mysql_real_escape_string($act). ")");
并尝试使用mysqli
的{{1}}内容。
在mysql
mysqli
答案 1 :(得分:0)
将此查询替换为您的查询工作
td
答案 2 :(得分:0)
请注意,mysql_query扩展在PHP 5.5.0中已弃用,并且已在PHP 7.0.0中删除。相反,应使用MySQLi或PDO_MySQL扩展名。
由于已经给出了MySQLi示例,请考虑您是否使用PDO。
// Build the parameter list
$sql = array(); $params = array();
for ($i=0; isset($_POST['ideal'][$i])&&isset($_POST['act'][$i]); $i++) {
$sql[] = ":act_{$i}, :ideal_{$i}";
$params["ideal_{$i}"] = $_POST['ideal'][$i];
$params["act_{$i}"] = $_POST['act'][$i];
}
// Then run the query safely using PDO
$dbh = new PDO('mysql:host=localhost;dbname=test', "user", "pass");
$stmt = $dbh->prepare("INSERT INTO ActivityProduct (AID, Ideal) VALUES (".implode("), (", $sql).")");
$result = $stmt->execute($params);