我对php有点新,我试图从数据库中检索raw,结果总是空的。我使用以下代码在表中插入记录并且它有效。
INSERT INTO `registeration`.`cars` (`lnumber`, `type`, `model`, `motor`, `owner`
,`expdate`) VALUES ('123654', 'Nissan maxima', '2008',
'1500', 'name name', '2013-11-30');
结果是1个原始插入
php文件中使用的代码是:
if (isset($_GET["lnumber"])) {
$lnumber = $_GET['lnumber'];
echo $lnumber;
$result = mysql_query("SELECT * FROM cars WHERE lnumber = $lnumber");
if (!empty($result)) {
// check for empty result
if (mysql_num_rows($result) > 0) {
....code....
}
} else {
// no car found
$response["success"] = 0;
$response["message"] = "No cars found";
// echo no users JSON
echo json_encode($response);
}
} else {
// required field is missing
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";
// echoing JSON response
echo json_encode($response);
}
但是,结果总是:123654{"success":0,"message":"No cars found"}
答案 0 :(得分:1)
您的代码不正确。 mysql函数在FAILURE上返回boolean false,例如发生错误时mysql_query要么返回一个结果句柄(查询成功运行),要么返回一个布尔值为FALSE(某些东西爆炸)。
没有行的结果集 NOT 错误。它只是一个空集。代码应该更像
$result = mysql_query($sql) or die(mysql_error()); // handle any error conditions
if (mysql_num_rows($result) == 0) {
echo 'no records found';
} else {
... build your json here ...
}
正如其他人上面所说,mysql _ *()函数已经过时并且已弃用。您应该使用mysqli或PDO。
正如其他人所说,你很容易受到SQL injection attacks的攻击。阅读并了解如何在使用PHP / sql进行更多工作之前预防这些问题
答案 1 :(得分:0)
首先,您需要考虑从mysql_*
转移到mysqli_*
或PDO。其次,您需要适当地获取信息:
$result = mysql_query("SELECT * FROM cars WHERE lnumber = '$lnumber'");
if(mysql_num_rows($result) > 0)
{
while($row = mysql_fetch_array($result))
{
echo $row['car'];
}
}
else
{
// No cars.
}
然后做你将要处理的数据库信息。
答案 2 :(得分:0)
只需删除此测试if (!empty($result))
并添加die(mysql_error());
$result = mysql_query("SELECT * FROM cars WHERE lnumber = $lnumber") or die(mysql_error());
// check for empty result
if (mysql_num_rows($result) > 0) {
....code....
} else {
// no car found
$response["success"] = 0;
$response["message"] = "No cars found";
// echo no users JSON
echo json_encode($response);
}
答案 3 :(得分:0)
谢谢你们所有的好评和建议,我不想开始错误的方式,我是一个Android开发人员,我需要学习一个项目即时工作的PHP,很高兴知道这些例子已经过时了。