2016-10-28 5 views
0

У меня есть страница, которая будет загружать несколько записей в формы. Я хочу иметь возможность обновлять несколько записей за один раз. Я попробовал несколько решений здесь и, как правило, просто создал массив и не успел сломать указанный массив для вставки sql. Любой вход был бы признателен!Обновление нескольких записей SQL сразу с использованием PHP

$formresults = $mysqli->query("THIS QUERY LOADS THE FORMS"); 
    if($formresults){ 
     while($row = $formresults->fetch_object()) 
     { 
      $a += 1; 
      echo "<b>Record Number ".$a."</b><br>"; 
      echo "<table><input type='hidden' name='Barcode[]' value='".$row->Barcode."' />"; 
        echo "<tr><td>Full Name (First Last):</td><td><input type='text' name='Person_Name[]' size='50' value='".$row->Person_Name."' /></td></tr>"; 
        echo "<tr><td>Phone Number:</td><td><input type='text' name='Phone[]' size='50' value='".$row->Phone."' /></td></tr>"; 
        echo "<tr><td>Address:</td><td><input type='text' name='Address1[]' size='50' value='".$row->Address1."' /></td></tr>"; 
        echo "<tr><td>City, State Zip:</td><td><input type='text' name='City[]' size='23' value='".$row->City."' />, <input type='text' name='State[]' size='6' value='".$row->State."' /> <input type='text' name='Zip[]' size='8' value='".$row->Zip."' /></td></tr>"; 
        echo "</table><br><br>"; 

     } 
     } 

     echo "<button type='submit' name='submit' value='UPDATE'/>"; 

if(isset($_POST['submit'])){ 
    if(!isset($_POST['Barcode']) || count($_POST['id']) == 0){ 
     return; 
    } 
    foreach($_POST['Barcode'] as $key => $Barcode){ 
     $update = $mysqli->query("UPDATE table SET  Person_Name='{$_POST['Person_Name'][$key]}' WHERE Barcode='{$Barcode}'"); 

     if($update){ 
     echo "It worked"; 
    } 
    } 
+1

[Маленький Бобби] ​​(http://bobby-tables.com/) говорит *** [ваш сценарий риска для SQL Injection атак.] (HTTP: //stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)*** Узнайте о [подготовленных] (http://en.wikipedia.org/wiki/Prepared_statement) заявлениях для [MySQLi] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php). Даже [избегая строки] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) небезопасно! [Не верьте?] (Http://stackoverflow.com/q/38297105/1011527) –

+0

@JayBlanchard Разве вы не слишком устали повторять себя так много раз? xD – icecub

+2

Ну, на самом деле да @icecub, но я не остановлюсь, пока SQL Injection не будет отдаленной памятью! ¯ \\ _ (ツ) _/¯ –

ответ

0

Извините, что я идиот - нашел свою ошибку - это было 6 часов моей жизни, ударяя головой о стол.

if(!isset($_POST['Barcode']) || count($_POST['id']) == 0){ 

Должно быть

if(!isset($_POST['Barcode']) || count($_POST['Barcode']) == 0){ 
+0

[empty] (http://php.net/manual/en/function.empty.php#refsect1-function.empty-parameters) должно быть достаточно: 'if (empty ($ _ POST ['Barcode')) {' –

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