为什么我的php从mysql返回一个值(一行)?

时间:2014-08-24 04:27:25

标签: php mysql

我有一个应该从mysql返回值的php文件,她是我的php文件:

<?php

$host = "localhost"; // Host name 
$username = "UserName"; // Mysql username 
$password = "PassWord"; // Mysql password 
$db_name = "DbName"; // Database name 
$tbl_name = "Notes"; // Table name 

// Connect to server and select databse.
mysql_connect($host, $username, $password)or die("cannot connect"); 
mysql_select_db($db_name)or die("cannot select DB");




// To protect MySQL injection (more detail about MySQL injection)
$mytitle = $_REQUEST['title'];
$mytitle = stripslashes($mytitle);
$mytitle = mysql_real_escape_string($mytitle);

$sql="SELECT * FROM $tbl_name WHERE title = '$mytitle'";


$result = mysql_query($sql);

// Mysql_num_row is counting table row
$count = mysql_num_rows($result);

$count = 0;
$items;

while($row = mysql_fetch_array($result)) {
    $item['userName'] = $row['userName'];
    $item['title'] = $row['title'];
    $item['comments'] = $row['comments'];
    $item['commentsTime'] = $row['commentsTime'];
    $item['commentsDate'] = $row['commentsDate'];
    $items[$count] = $item;
}

echo json_encode($items);

?>

当我从浏览器运行代码时,文件只返回一个值,我通过URL(http://MyWeb.com/ReadNotesByTitle.php?title=titleName)访问该文件。

任何人都可以告诉我我的代码有什么问题吗? 感谢

3 个答案:

答案 0 :(得分:1)

你在循环中错过了$count++;

答案 1 :(得分:1)

你永远不会增加$count;它总是具有值0.因此第二项将覆盖第一项,第三项将覆盖第二项,依此类推。最终,您将只返回从数据库中提取的最后一行。

在循环结束时递增$count以解决问题:

    $items[$count] = $item;
    $count++;
}

或者,您可以append an element to an array而无需跟踪计数。完全删除$count变量并将数组分配更改为:

$items[] = $item;

答案 2 :(得分:0)

虽然我看到这已经得到了回答,但我想我应该注意到你的代码比以前更加复杂。您完整的循环可以总结如下,并将给出您想要的结果

while($row = mysql_fetch_array($result)) {
    $items[] = $row;
}