嗨,
为什么这不起作用?
<?php
$select = "select * from messages where user='$u'";
$query = mysqli_query($connect,$select) or die(mysqli_error($connect));
$row = mysqli_num_rows($query);
$result = mysqli_fetch_assoc($query);
$title = mysqli_real_escape_string($connect,trim($result['title']));
$message = mysqli_real_escape_string($connect,trim($result['message']));
while(($result = mysqli_fetch_assoc($query))){
echo $title;
echo '<br/>';
echo '<br/>';
echo $message;
}
?>
这在哪里工作 -
<?php
echo $title;
?>
答案 0 :(得分:1)
变化
while(($result = mysqli_fetch_assoc($query))){
到
while($row = mysqli_fetch_assoc($result)){
<强>更新强>
<?php
$query = "select * from messages where user='$u'";
$result = mysqli_query($connect,$query) or die(mysqli_error($connect));
$number_of_rows = mysqli_num_rows($result);
while($row = mysqli_fetch_assoc($result)){
$title = trim($row['title']);
$message = trim($row['message']);
echo $title;
echo '<br/>';
echo $message;
echo '<br/>';
}
?>
答案 1 :(得分:0)
除了dqhendricks的建议,你永远不会使用你的返回值。而不是
while ( $result = mysqli_fetch_assoc($query) ){
echo $title;
echo '<br/>';
echo '<br/>';
echo $message;
}
使用
while ( $row = mysqli_fetch_assoc($result) ){
echo mysqli_real_escape_string($connect,trim($result['title']));
echo '<br/>';
echo '<br/>';
echo mysqli_real_escape_string($connect,trim($result['message']));
}
您还:
mysqli_num_rows
null
答案 2 :(得分:0)
如果你的查询返回1行,则while中的条件总是为假(你已经在$result = mysqli_fetch_assoc($query);
上面的几行上面提取了第一行。另外,你只分配$ title一次,所以即使{{1循环执行,它将始终打印第一个标题
你为什么逃避结果???通常while
用于转义查询参数,而不是结果。
答案 3 :(得分:0)
这里有些问题:
1)确保你正确地消毒$ u - 它不清楚它来自哪里,但如果它是用户输入,你需要逃避它。
2)你正在使用mysqli函数错误。典型的方法是:
//define a query
$sql = 'SELECT .. FROM ...';
//query the database to obtain a result
$result = mysqli_query($sql);
//iterate over the result, fetching rows as associative arrays.
while ($row = mysqli_fetch_assoc($result)){
echo "Foo = " . $row['foo'] ."!<br/>";
}
3)目前尚不清楚为什么要对从数据库中获取的值使用real_escape。您可能需要htmlspecialchars()代替。
答案 4 :(得分:0)
这不起作用,因为您在设置其值之前使用了结果数组。
从技术上说,这应该会运行,但它看起来并没有给出预期的结果。
尝试用$ result ['title']替换$ title。