我有一个应该从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)访问该文件。
任何人都可以告诉我我的代码有什么问题吗? 感谢
答案 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;
}