2016-03-03 207 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()函数也。 –