一方面,您必须将 WHERE 添加到您的 SQL 语句中......
SELECT * FROM `contacts` WHERE `id` = $id
您在哪里看到id
这应该是表中 id 列的名称,无论它可能是什么。但是您还必须先清理输入...
if(!is_numeric($_GET['id']))
exit; // if not a number then exit
$id = mysql_real_escape_string($_GET['id']); // escape the input
当然这是最基本的错误检查。你可以阐述一下。所以你的代码看起来更像这样......
<?php
$username = "root";
$password = "";
$hostname = "localhost";
//connection to the database
$dbhandle = mysql_connect($hostname, $username, $password)
or die("Unable to connect to MySQL");
$selected = mysql_select_db("mydb",$dbhandle)
or die("Could not select mydb");
if(!is_numeric($_GET['id']) || !$_GET['id'])
exit; // if not an integer or id not set then exit
$id = mysql_real_escape_string($_GET['id']); // escape the input
$result = mysql_query("SELECT * FROM contacts WHERE id = $id");
$rows = array();
while($r = mysql_fetch_assoc($result)) {
$rows['title'][] = $r;
}
print json_encode($rows);
?>
而且您真的不应该使用 root 连接到 Web 应用程序中的数据库。而且米海也是对的,你应该使用 PDO 来代替,但对于这么简单的应用程序来说,它并不是真正需要的。
编辑
但上面的代码需要id
输入。如果您希望仍然能够获得整个列表(如果没有id
提供),它看起来像这样......
<?php
$username = "root";
$password = "";
$hostname = "localhost";
//connection to the database
$dbhandle = mysql_connect($hostname, $username, $password)
or die("Unable to connect to MySQL");
$selected = mysql_select_db("mydb",$dbhandle)
or die("Could not select mydb");
$sql = "SELECT * FROM `contacts`";
if(isset($_GET['id']) && $_GET['id'] > 0) {
// if id is set then add the WHERE statement
if(!is_numeric($_GET['id']))
die('id must be an integer'); // if id is not an integer then exit
$id = mysql_real_escape_string((int)$_GET['id']); // escape the input
$sql .= " WHERE `id` = $id"; // append the WHERE statement to the sql
}
$result = mysql_query($sql);
$rows = array();
while($r = mysql_fetch_assoc($result)) {
$rows['title'][] = $r;
}
print json_encode($rows);
?>