关于php中的mysql查询

时间:2014-01-24 16:01:38

标签: php mysql

我想知道是否可以在单个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')");
  }
?>

这可能吗?我很好奇,因为我计划使用这种想法。

3 个答案:

答案 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');");

xkcd
&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_peoplename)VALUES('$ name1'),('$ name2'),('$ name3');”);