我想知道是否可以在单个php代码中使用多个插入查询。就像我点击保存按钮一样。我的PHP代码将在同一个表上执行多次插入?可能吗?
示例:tb_people with field 'id','name'
如果单击要保存的保存按钮,我需要输入3个名称输入值吗?
示例代码:
<?php
if(isset($_POST['save']))
{
$name1 = $_POST['name1'];
$name2 = $_POST['name2'];
$name3 = $_POST['name3'];
mysql_query("INSERT into tb_people(name) VALUES ('$name1')");
mysql_query("INSERT into tb_people(name) VALUES ('$name2')");
mysql_query("INSERT into tb_people(name) VALUES ('$name2')");
}
?>
这可能吗?我很好奇,因为我计划使用这种想法。
答案 0 :(得分:2)
是。但在使用MySQL之前,请先了解更多有关MySQL的信息。
$name1 = mysql_real_escape_string($_POST['name1']);
$name2 = mysql_real_escape_string($_POST['name2']);
$name3 = mysql_real_escape_string($_POST['name3']);
mysql_query("INSERT INTO `tb_people` (`name`) VALUES ('$name1'), ('$name2'), ('$name3');");
&GT; xkcd
你甚至可以这样做:
HTML:
<input type="text" name="name[]" />
Repeat the above as many times as you like - you can even add more with JavaScript!
PHP:
$toinsert = array_map(function($n) {
return "('".mysql_real_escape_string($n)."')";
},$_POST['name']);
mysql_query("INSERT INTO `tb_people` (`name`) VALUES ".implode(", ",$toinsert));
MySQL非常强大。尝试使用准备好的查询 。
PS。如果像我一样,你认为mysql_real_escape_string
每次都要输入...
function dbesc($n) {return mysql_real_escape_string($n);}
答案 1 :(得分:0)
是的,这是可能的。
所有这一切都是向数据库调用3个mysql查询。
您的代码示例也应该完全正常。
答案 2 :(得分:-1)
您的代码应该有效。 最好有一些针对SQL注入的保护,如下所示。
我已将addslashes更改为mysql_real_escape_string。所以现在它应该没问题。
$ name1 = mysql_real_escape_string($ _ POST ['name1']);
$ name2 = mysql_real_escape_string($ _ POST ['name2']);
$ name3 = mysql_real_escape_string($ _ POST ['name3']);
mysql_query(“INSERT INTO tb_people
(name
)VALUES('$ name1'),('$ name2'),('$ name3');”);