2014-01-24 3 views
-4

Мне было интересно, можно ли использовать несколько запросов на вставку в одном PHP-коде. Например, когда я нажал кнопку сохранения. Мой PHP-код будет выполнять множественную вставку в одной таблице? Является ли это возможным?о mysql запросе в 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

Почему бы вам не попробовать? – kba

+0

да абсолютно возможно –

+1

... да возможно, 'VALUES ('$ name1'), ('$ name2'), ('$ name3')' – naththedeveloper

ответ

-1

Ваш код должен работать. Лучше иметь некоторую защиту от SQL-инъекций, как показано ниже.

  • Я изменил addlashes на 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');");

+2

'addslashes' is * not * безопасный способ предотвратить SQL-инъекцию на всех. ** Пожалуйста, ** прочитайте документы: http://php.net/addslashes –

+0

См. Также: http://stackoverflow.com/q/860954 –

+0

@RocketHazmat, расширение mysql_real_escape_string устарело от PHP 5.5.0, и будет удален в будущем как http://php.net/mysql_real_escape_string. Другие варианты: mysqli_real_escape_string() и PDO :: quote(). – Duli

0

Да, это возможно.

Все это делает вызов 3 mysql-запросов в базу данных.

Ваш пример кода должен отлично работать для этого.

2

Да. Но узнайте больше о 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
> 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 является fuckton набирать каждый раз, когда ...

function dbesc($n) {return mysql_real_escape_string($n);} 
+0

Я могу сделать это с помощью подготовленного запроса: http://pastebin.com/3k7YYJur Не очень, но это возможно. –

Смежные вопросы