2016-11-22 51 views
-5

我的查询不起作用。它不打印记录,但是在phpmyadmin中它确实记录了一条记录。我的查询出了什么问题?无法获取记录

$sql1 = "SELECT fullname FROM addresses WHERE userid = 1 LIMIT 1"; 
$result1 = mysqli_query($conn, $sql1); 

while ($row = mysqli_fetch_row($result1)) { 

    $fullname = $row['fullname']; 

$i++; } 
echo $fullname; 

UPDATE:

这是我的表没有一个唯一的密钥。

+1

“不工作”是什么意思?你有错误信息吗?你检查过['mysqli_error()'](https://secure.php.net/manual/en/mysqli.error.php)吗?查询是否只返回零行? – Chris

+0

它出现空的 – obreezy

+0

所以''我''为0时,你echo $全名;'? (我实际上并不确定你是否在任何地方初始化该值......) – Chris

回答

-3

您不需要while循环来设置数据库中的单个记录。下面我已更新您的单一记录的代码。

​​
+1

没有任何解释的代码转储很少有帮助。请添加一些上下文,以便OP了解您修复的内容。 – Chris

+1

只是看到OP更喜欢答复,可以'复制粘贴'来轻松获得结果,而不是阅读手册和指南,以帮助他,并更好地理解问题。 – Irvin

+1

'mysqli_fetch_assoc'和'mysqli_fetch_row'之间的区别不是那个获取单个记录...... – Chris

4

the documentation来自:

获取数据的一行从结果集,并返回它作为枚举数组,其中每个列存储在数组中从0(零)开始的偏移。

您的值是在$row[0]而不是$row['fullname']

如果您想要关联数组,请使用mysqli_fetch_assocmysqli_fetch_array

+2

如果你@obreezy坚持使用'$ row ['fullname']'',那么使用'fetch_array'。我也想知道为什么如果你只需要一条记录,那么为什么需要'while循环',因为你的'LIMIT 1'。 – Irvin

0

我相信mysql_fetch_assoc应该去为这种类型的数据检索的,但是,为了给你一个答案下面的代码的方式,在这儿呢。

$conn = mysqli_connect($host,$user,$password); 
mysqli_select_db($conn, $database); 
$i = 0; 

$sql1 = "SELECT fullname FROM addresses WHERE userid=1 LIMIT 1"; 
$result1 = mysqli_query($conn, $sql1); 

while ($row = mysqli_fetch_row($result1)) { 

    $fullname = $row[0]; 

$i++; } 

echo $fullname; 

您使用索引名获取数据

'全名'

像这样,

$全称= $行[ '全名' ]。

但是,如果您在while循环之前显示$ row的值,则可以看到可用选项仅为实际编号索引。

此外,您还需要确保您使用的是mysqli_querymysqli_fetch_row在使用mysqli_connectmysqli_select_db

相关问题