Вставить несколько строк в базу данных MySQL - PullRequest
1 голос
/ 04 января 2011

Как бы вы добавили несколько строк в БД, если бы определенные поля содержали данные? Учтите следующее:

register_case = mysql_query ("INSERT INTO cases VALUES
                              ('$case','$p_firstname','$p_lastname','$city'),
                              ('$case','$p2_firstname','$p2_lastname','$city'),
                              ('$case','$p3_firstname','$p3_lastname','$city')"
                            );

Это создает несколько строк с разными именами и фамилиями, но регистр и город остаются неизменными. Однако, если есть только одна запись, строка все еще создается для другой 2. Как можно создать строку, только если в данном поле есть данные?

Ответы [ 2 ]

0 голосов
/ 04 января 2011

Я предполагаю, что это будет принимать информацию из формы?

Если это так, назовите входные данные как "name =" firstname [] "", что приведет к их помещению в массив при отправке,как $ _POST ['firstname'] [0], поэтому, если у вас есть 3 входа с именем firstname [], вы получите $ _POST ['firstname'] [0], $ _ POST ['firstname'] [1] и$ _POST ['firstname'] [2].

Затем сделайте что-то вроде этого:

$sql = 'INSERT INTO `cases` VALUES ';

for($i = 0;$i < count($_POST['firstname']);$i++)
{
    $sql .= "('$case','".$_POST['firstname'][$i]."','".$_POST['lastname'][$i]."','$city')";
    if($i != count($_POST['firstname']) - 1)
    {
        $sql .= ',';  //Will insert a comma after each except the last.  Count - 1 since $i will equal count - 1 on the last one, since it starts at 0 and not 1.
    }
}

$register_case = mysql_query($sql);

Я думаю, это должно сработать.

В качестве альтернативы вы можете сделать foreachи добавьте ',' к каждому, а затем обрежьте его с правого конца строки, когда закончите, или сделайте foreach и сохраните внешний счетчик, который вручную увеличивается после в конце.Во-вторых, ни один из них не поймал бы фамилии, ну, конечно, без использования типа $ key => $ value и выполнения $ _POST ['lastname'] [$ key].Может также потребоваться проверить наличие пустых строк с помощью if.

Конечно, вы никогда не захотите напрямую передавать значения $ _POST или $ _GET в SQL, сначала выполнить проверку и убедиться, что нет внедрения.

0 голосов
/ 04 января 2011

Вы можете попробовать вариант if, который будет делать что-то вроде:

if (isset($field)) do thisquery 

или

if ($field != "") do thatquery
...