0

我对 php 有点陌生,我正在尝试从数据库中检索原始数据,结果始终为空。我已经使用以下代码在表中插入了一条记录并且它有效。

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"}

4

3 回答 3

1

您的代码不正确。mysql 函数在失败时返回布尔值 false,例如发生错误时。mysql_query 要么返回结果句柄(查询成功运行),要么返回布尔值 FALSE(发生故障)。

没有行的结果集不是错误。它只是一个空集。代码应该更像

$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 注入攻击。在您使用 PHP/sql 进行更多工作之前,请阅读并了解如何预防这些问题

于 2013-04-26T18:28:50.667 回答
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.
}

然后对数据库信息做任何你想做的事情。

于 2013-04-26T18:29:02.353 回答
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);
}
于 2013-04-26T18:32:07.197 回答