2015-04-10 2 views
0
 $cg= $mysqli->query("SELECT * FROM news WHERE id='$postid' 
     and status='1' ORDER BY RAND()"); 
     while($sd= $cg->fetch_assoc()){ 
     $title= $sd['title']; 

     } 

Что я хочу сделать, это включить уаг $ название на что-то вродеКак превратить MySQL массив в массив PHP

 $mytitle[1] = 'first title'; 

    $mytitle[2] = 'second title'; 

    $mytitle[3] = 'third title'; 
     $randnews= rand(1, 3); 
     echo $mytitle[$randnews]; 
+1

'$ названия [] = $ сд [ 'названия'];' – Steve

+0

К сожалению я PHP новичка. Спасибо Steve – Olalekan

+0

прямо напишите $ cg-> fetch_array –

ответ

0

Попробуйте это, я попытался на основе запроса моей таблицы базы данных, Он работает так, как вы ожидали.

Код: -

<?php 
    require_once("connect.php"); 
    $sql=("SELECT * FROM news WHERE id='$postid' and status='1' ORDER BY RAND()"); 
    $result = $con->query($sql); 
    while($row = $result->fetch_assoc()){ 
     $array[] = $row['title'];  
     } 
    echo "After Sorting".'<pre>'; 
    print_r($array); 
    echo '</pre>';  
?> 

$ жулик переменная класса соединений.

$ con = mysqli_connect ($ servername, $ username, $ password, $ my_db);

Выход: -

[xyz] => "test" 
[abc] => "tester" 
[pqr] => "user" 
[res] => "test" 

Надеется, что это помогает

+0

Как я уже прокомментировал ответ Сарата, нет необходимости проходить результат запроса и построить массив aux, поскольку вы можете получить его с помощью 'fetch_all()' – Carlos

0

Вы должны использовать fetch_all()

$cg = $mysqli->query("SELECT * FROM news WHERE id='$postid' and status='1' ORDER BY RAND()"); 
$mytitle = $cg->fetch_all(MYSQLI_ASSOC); 
$randnews = rand(1, 3); 
echo $mytitle[$randnews]['title']; 
+0

'SELECT title FROM..', если требуется только заголовок. Также «rand (1,3)» игнорирует 1-й результат и 5-й, 6-й и т. Д. Он также разбивается на менее 4 результатов. Поскольку порядок уже рандомизирован в SQL, просто эхо-1-й результат – Steve

0
$cg= $mysqli->query("SELECT * FROM news WHERE id='$postid' and status='1' ORDER BY RAND()"); 
     while($sd= $cg->fetch_assoc()){ 
     $title[]= $sd['title']; 
     } 

print_r($title); 
0

попробуйте это.

$cg= $mysqli->query("SELECT * FROM news WHERE id='$postid' and status='1' ORDER BY RAND()"); 
      while($sd= $cg->fetch_assoc()){ 
      $title[]= $sd['title']; 
      } 
    echo $title[1]['col1']; 
    echo $title[3]['col2']; 

и HERE является полным справочным ..

+0

Нет необходимости трассировать результат запроса и хранить каждую строку/поле, так как вы можете напрямую использовать 'fetch_all()' – Carlos

0
$title = array(); 
while($sd= $cg->fetch_assoc()){ 
    $title[] = $sd['title']; 
} 
your can user print_r($title) to check how the array looks 
it will look like 
Array(
    0 =>'first title', 
    1 =>'second title', 
    2 =>'third title' 
) 

PHP-массив всегда начинается с 0 в качестве ключа, а не 1. Таким образом, если длина массива 3, ключи 0 1 2 и так использовать rand(0,2) т.е. rand(0,count($tile)-1)

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