2016-03-03 187 views
1

我已經嘗試過$ row [0]而不是$ row [1]。它說,像這樣的「通知:未定義抵消:1在C:\ XAMPP \ htdocs中\上線10 t2.php」Php數組的偏移量

<?php 
    $c=mysql_connect("localhost","root",""); 
//db connection 
    mysql_select_db("niro"); 

    $re=mysql_query("select id from detail where grade >=80 ORDER BY RAND()"); 
//select who are all have above 80 

     while($x=mysql_fetch_array($re, MYSQL_BOTH)) 
    { 
    printf ("%s %s",$x[0],$x[1]."\n"); 
// i have multiple fields but it says undefined offset : 1. 
    } 
    ?> 
+0

'print_r($ x);'循環內 – 2016-03-03 03:43:16

+1

嘗試選擇全部而不是選擇ID列。 – claudios

+0

Gothca claudios :)但我該如何選擇2列與單列 –

回答

2

你是因爲你在你的SELECT查詢嘗試選擇只有一個列得到未定義,偏移使用select *或者您可以提到更多列名稱。

$re=mysql_query("select * from detail where grade >=80 ORDER BY RAND()"); 
+0

謝謝Akshay,但如果我想選擇唯一的ID? –

+0

那麼你不能打印x [1],因爲你選擇的所有列將被分配爲行變量的索引。數字索引或文本索引,即x [0]或x ['id']。 –

+0

我想從表格中選擇2行,那我該怎麼做? –

3

我想原因是你只需要在查詢結果事件一個id字段,如果你可以在你的表有mutlit場。 因爲你的sql是「從詳細級別中選擇id>> = 80 ORDER BY RAND()」。

您應該使用「select * from detail where grade> = 80 ORDER BY RAND()」來獲取表中的其他字段。 請確保ORDER BY RAND()是你想要的。它將按蘭特順序選擇數據。如果你只想得到所有等級大於等於80的數據,就不需要隨機排序。

更新: 數組索引是該字段。 如果你只想得到和打印前2行,你可以使用sql如: 「select * from detail where grade> = 80 limit 2」

+0

歡迎來到Stackoverflow ... –

+0

謝謝akshay :) –

+0

謝謝梅爾森,這工作很酷:),是的,我想要RAND()函數也。 –