Повторять PHP-запросы с новыми выбранными значениями? - PullRequest
2 голосов
/ 02 июля 2011

Есть ли более простой способ сделать это вместо того, чтобы писать одну и ту же строку кода более 100 раз? Мне нужно значение поля L_key каждый раз, как вы заметите:

$query1 = "SELECT L_key FROM profiles WHERE v_key = '$L1_key'";
$result = mysqli_query($dbh, $query1);
if ($row = mysqli_fetch_array($result)) 
{
    $L2_key = $row['L_Key'];
    $query2 = "UPDATE profiles SET min = min + 1 WHERE v_key = '$L2_key'";
    mysqli_query($dbh, $query2);
} 

$query3 = "SELECT L_key FROM profiles WHERE v_key = '$L2_key'";
$result = mysqli_query($dbh, $query1);
if ($row = mysqli_fetch_array($result)) 
{
    $L3_key = $row['L_Key'];
    $query2 = "UPDATE profiles SET min = min + 1 WHERE v_key = '$L3_key'";
    mysqli_query($dbh, $query2);
} 

$query3 = "SELECT L_key FROM profiles WHERE v_key = '$L3_key'";
$result = mysqli_query($dbh, $query1);
if ($row = mysqli_fetch_array($result)) 
{
    $L4_key = $row['L_Key'];
    $query2 = "UPDATE profiles SET min = min + 1 WHERE v_key = '$L4_key'";
    mysqli_query($dbh, $query2);
} 

$query3 = "SELECT L_key FROM profiles WHERE v_key = '$L4_key'";
$result = mysqli_query($dbh, $query1);
if ($row = mysqli_fetch_array($result)) 
{
    $L5_key = $row['L_Key'];
    $query2 = "UPDATE profiles SET min = min + 1 WHERE v_key = '$L5_key'";
    mysqli_query($dbh, $query2);
} 

Использую ли я цикл? Если да, не могли бы вы показать мне код для выполнения этого снова и снова, так как я все еще учусь и не знаю, что такое цикл? Или есть другой метод?

Ответы [ 3 ]

1 голос
/ 02 июля 2011

Если я правильно понимаю, вы можете использовать mysql_num_rows ИЛИ mysql_result, чтобы получить общее число, поэтому вы можете использовать время:

<? $a = 0; while($total != $a) { //query $a++; } ?>
1 голос
/ 02 июля 2011

В вашей таблице профилей есть рекурсивная структура (v_key => (l_key : v_key)=> ( l_key... )), и SQL не очень хорошо справляется с отсылкой с помощью простых запросов.Вы можете написать хранимую процедуру или обработать ее с помощью PHP.Поскольку вы новичок, я думаю, что PHP гораздо проще для этой задачи:

<?php
// define a variable on the outside -- we'll need it for each iteration
$lKey;
// If you know how many are going to be used, use a for loop because 
// then you know you won't get some sort of nasty infinite recursion issue.
// $count is however many times this needs to operate.
for($i = 0; $i < $count; $i++ )
// while( true ) // <-- this will keep going until "break" is called.
// If you don't know how many will be used. Comment out the for loop
// and uncomment thie while loop.
{
    // your initial query -- I added a limit because you only need one
    // and there is no sense in doing anything more than what you need
    $query1 = "SELECT L_key FROM profiles WHERE v_key = '$lKey' LIMIT 1";
    $result = mysqli_query($dbh, $query1);
    if ($row = mysqli_fetch_array($result)) // so far so good. 
    {
        $lKey = $row['L_Key']; // assign that outside variable to the new key
        // and run the necessary update.
        $query2 = "UPDATE profiles SET min = min + 1 WHERE v_key = '$lKey'";
        mysqli_query($dbh, $query2);
    } 
    else
    {
        break;
    }
    // as of right now, $lKey is now the value from the select above.
    // which means that you'll be able to start the next loop with it.
}
0 голосов
/ 02 июля 2011

Используйте pdo и решите все свои проблемы.Это правда в pdo с использованием подготовленных заявлений.Будет даже лучше.

...