2015-03-19 6 views
0

Я выбираю 5 строк в случайном порядке из таблицы.Как вставить возвращаемые значения в другую таблицу

$query = "SELECT stdid, name FROM students order by rand(UNIX_TIMESTAMP()) limit 5" 
$myquery = mysqli_query($db_connect, $query); 
while($students = mysqli_fetch_assoc($myquery)){ 
    $stdid =$students['stdid']; $name = $students['name']; $dept = $students['dept']; 
    echo "<br><br>".$stdid."<br>".$name."<br>".$dept; 
//NOT SURE IF I ADD INSERT HERE  
} 

Я хочу, чтобы INSERT (5 строк) отображал «stdid» в другую таблицу.

Нужно ли добавить INSERT в цикл WHILE? Есть ли еще один способ сделать это?

Большое спасибо.

+0

Вы можете просто вставить еще один запрос INSERT после эха – yamidemichaos

+0

Зачем вставлять? Это потенциально удваивает размер хранилища таблиц и не нормализуется. Добавьте флаг в таблицу (например, was_shown) и обновите его после эха. –

ответ

0

Использование PHP MySQLi подготовленных операторов для подготовки запроса вставки, один раз, вне цикла, а затем повторно использовать этот объект prep'd вставки сбросить значения в нужную таблицу внутри цикла:

$query1 = "SELECT stdid, name FROM students order by rand(UNIX_TIMESTAMP()) limit 5"; 
$myquery1 = mysqli_query($db_connect, $query1); 

// prepare insert stdid 
$query2 = "INSERT INTO someothertable (stdid) VALUES (?)"; 
$myquery2 = mysqli_prepare($db_connect, $query2); 
mysqli_stmt_bind_param($myquery2, 'i', $stdid); 

while($students = mysqli_fetch_assoc($myquery1)){ 
    $stdid =$students['stdid']; $name = $students['name']; $dept = $students['dept']; 
    echo "<br><br>".$stdid."<br>".$name."<br>".$dept; 

    // insert stdid 
    mysqli_execute($myquery2); 
} 
0

Будет работать, чтобы вставить вставку внутри цикла while. Всего лишь пять записей, это не будет слишком неэффективным. Если вы хотите вставить все значения сразу, вы должны проверить этот вопрос, как это сделать. Inserting multiple rows in a single SQL query?

0

You может просто вставить заявление, как указано выше. Вот несколько кодов, которые помогут вам подготовить подготовленный оператор, который добавит ваши значения, которые не заданы заранее.

$mysqli = new mysqli("localhost", "my_user", "my_password", "world"); 

/* check connection */ 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

$mysqli->query("CREATE TABLE myCity LIKE City"); 

/* Prepare an insert statement */ 
$query = "INSERT INTO myCity (Name, CountryCode, District) VALUES (?,?,?)"; 
$stmt = $mysqli->prepare($query); 

$stmt->bind_param("sss", $val1, $val2, $val3); 

$val1 = 'Stuttgart'; 
$val2 = 'DEU'; 
$val3 = 'Baden-Wuerttemberg'; 

/* Execute the statement */ 
$stmt->execute(); 

$val1 = 'Bordeaux'; 
$val2 = 'FRA'; 
$val3 = 'Aquitaine'; 

/* Execute the statement */ 
$stmt->execute(); 

/* close statement */ 
$stmt->close(); 

Взято из руководства. Надеюсь, поможет!

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