2016-05-13 4 views
2

У меня есть следующий кодPHP не отображает результат из MYSQL запроса

$sql = "SET @uid := (SELECT ID FROM channels WHERE Used = 0 ORDER BY RAND() LIMIT 1);"; 
$sql = "UPDATE channels SET Used = 1 WHERE ID = @uid;"; 
$sql = "SELECT * FROM channels WHERE ID IN = @uid;"; 
$result = mysqli_multi_query($conn, $sql) 
       or die(mysqli_error($sql)); 
if (mysqli_num_rows($result) > 0) { 
    $text = ''; 
    while($row = mysqli_fetch_assoc($result)) { 
     $Channel_Location = $row['Channel_Location']; 
     $text = $text . $Channel_Location; 

    }  
} 

Теперь вопрос я имею является PHP разве отображая результат, возвращаемый запросом MYSQL, который хранится в сессии позже в код, который будет отображаться на странице манекена он приходит со следующей ошибкой

Предупреждение: mysqli_num_rows() ожидает параметр 1, чтобы быть mysqli_result

Мой SQL-запрос выполняет именно то, что мне нужно, мне просто нужно, поэтому я не хочу его менять. Мне просто нужен совет по поводу того, как я получаю PHP для эха @uid , есть ли желающие помочь мне решить проблему? если так спасибо.

+1

'$ результат = mysqli_query ($ сопп, $ SQL) или умереть (mysqli_error ($ сопп));' –

+1

http://php.net/manual/en/mysqli.multi-query.php вам есть 3 запроса в вашем '$ sql', поэтому вы должны использовать функцию' multi_query' – Alex

+0

Я согласен с @ Fred-ii-, у вас есть ошибки, поэтому эта строка достигается с помощью параметра non mysqli_result. – CodeGodie

ответ

1

У вас есть 3 запросов в вашем $ SQL, так что вы должны использовать multi_query функцию http://php.net/manual/en/mysqli.multi-query.php

И вы можете изменить свой первый запрос:

SET @uid = 0; 
SELECT @uid := ID FROM channels WHERE Used = 0 ORDER BY RAND() LIMIT 1); 

Update Вы можете попробовать этот фрагмент вашего код, измененный всеми комментариями.

$sql = 'SET @uid = 0;'; 
$sql .= 'SELECT @uid:= ID FROM channels WHERE Used = 0 ORDER BY RAND() LIMIT 1);'; 
$sql .= 'UPDATE channels SET Used = 1 WHERE ID = @uid;'; 
$sql .= 'SELECT * FROM channels WHERE ID IN = @uid;'; 
if (mysqli_multi_query($conn, $sql)) { 
    do { 
     $result = mysqli_store_result($conn); 
    } while(mysqli_next_result($conn)); 
    if (mysqli_num_rows($result) > 0) { 
    $text = ''; 
    while($row = mysqli_fetch_assoc($result)) { 
     $Channel_Location = $row['Channel_Location']; 
     $text = $text . $Channel_Location; 
    }  
    } 
} else { 
    die(mysqli_error($conn)); 
} 
+0

Могу ли я быть нахальным им, а не новым, чтобы вы могли обновить мой код, чтобы объяснить, что вы имеете в виду? –

+0

Ive обновил код, чтобы отразить мои изменения –

+1

Ваши изменения ввели новую проблему. sql каждый раз вместо того, чтобы добавлять к нему. (Второй и третий '$ sql =' должны быть '$ sql. ='.) – GertG

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