2013-05-31 2 views
0

Как я могу создать сценарий, который отправляет данные несколько раз в зависимости от того, сколько раз пользователь хочет. Я думал, что могу сделать это, используя цикл for, но не уверен, с чего начать. Цель состоит в том, чтобы опубликовать эту строку данных 1, 3 или, возможно, 5 раз в таблице mySQL. У кого-нибудь есть средства, с чего начать?Как отправить данные в php и mysql для вставки нескольких раз (строк) с помощью цикла for

Ниже то, что я работаю с ...

// check if the form was submitted 
if(isset($_POST['save_stuff'])) { 

    // create the website object 
    $stuff = new stuff($_POST['stuff']); 

    // prepare an SQL query 
    $stmt = $dbh->prepare("INSERT INTO `".$example."` (`title`, `stuf`, `due`, `details`, `category`, `user`) VALUES (:title, :stuff, :due, :details, :category, :user)"); 

$id = mysql_real_escape_string($_GET['id']); 


    // run the SQL query 
    if( $stmt->execute(array(
     'title' => $stuff->title, 
     'stuff' => $id, 
     'due' => $stuff->due, 
     'details' => $stuff->details, 
     'category' => $stuff->category, 
     'user' => $stuff->user 
    )) 
) { 

    // if successful then go back to home page 
    header("Location: ../stuff/?id=".$id.""); 
    } else { 

    // display an error if it failed 
    echo "<p>failed to add stuff</p>"; 
    } 
+3

Вам не нужно бежать номер, прежде чем вы передаете его 'выполнить()'. 'mysql_real_escape_string' также не имеет смысла, как только PDO предоставляет свою собственную функцию выхода – zerkms

+0

, но как насчет вопроса? –

+0

'execute()' несколько раз? – zerkms

ответ

1
<?php 
// check if the form was submitted 
if(isset($_POST['save_stuff'])) { 

    // create the website object 
    $stuff = new stuff($_POST['stuff']); 

    // prepare an SQL query 
    $stmt = $dbh->prepare("INSERT INTO `".$example."` (`title`, `stuf`, `due`, `details`, `category`, `user`) VALUES (:title, :stuff, :due, :details, :category, :user)"); 

    // Unnecesary since PDO takes care of it anyway trough execute 
    //$id = mysql_real_escape_string($_GET['id']); 

    // number of times to run 
    $timestorun = 10; 
    for($i = 1; $i <= $timestorun; $i++){ 
     // Notice it will insert the same stuff multiple times! 
     // run the SQL query 
     if( $stmt->execute(array(
     'title' => $stuff->title, 
     'stuff' => $id, 
     'due' => $stuff->due, 
     'details' => $stuff->details, 
     'category' => $stuff->category, 
     'user' => $stuff->user 
     )) 
     ) { 
      $insertworkedArr[] = 1; 
      $allIds .= $id . ","; 
     } else { 
      $insertworkedArr[] = 0; 
     } 
    } 
    if(min($insertworkedArr) == 1){ 
     // if successful then go back to home page 
     // $allIds contains all IDs that are inserted, accessible 
     // as an array trough an explode($allIds,",") at the next page 
     header("Location: ../stuff/?id=".$id."&wasTheLastOneButAlso".$allIDs.""); 
    } else { 
     // display an error if it failed 
     echo "<p>failed to add stuff</p>"; 
    } 
} 
?> 
+0

. Он функционирует так, как будто предполагается вставить несколько раз, но при этом возникает ошибка« не удалось добавить материал »вместо перенаправления на заголовок. –

+0

Извините, теперь все изменилось на if (min ($ insertworkedArr) == 1) вместо 0. Скажите, если он работает как решение для вас. –

+0

Работал отлично! Спасибо! –

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