为了账号安全,请及时绑定邮箱和手机立即绑定

使用 PHP 从 MySQL 查询中没有返回行,而手动运行查询返回行

使用 PHP 从 MySQL 查询中没有返回行,而手动运行查询返回行

PHP
慕娘9325324 2021-11-05 10:52:39
我正在使用 jquery ajax 调用返回 JSON 的 PHP 页面简单 API。这是代码<?php $response['is_error'] = 'no';$user = $_POST['user'];$date = $_POST['date'];$sql = "select * from locations where user_id='$user' and DATE(timestamp) = '$date'";$locations = $conn->query($sql) or $response['is_error'] = 'yes';$response['num_rows'] = $locations->num_rows;$locations = $locations->fetch_assoc(); $response['locations'] = $locations;$response['date'] = $date;if($response['is_error'] == 'yes'){    $response['status'] = "failed";    $response['error'] = $conn->error;}else{    $response['status'] = "ok";}$response['sql']=$sql;echo json_encode($response);执行此脚本时返回以下 JSON{"is_error":"no","num_rows":0,"locations":null,"date":"2019-07-30","status":"ok","sql":"select * from locations where user_id='0123456789' and DATE(timestamp) = '2019-07-30'"} 以下是解析后的版本,方便观看date: "2019-07-30"is_error: "no"locations: nullnum_rows: 0sql: "select * from locations where user_id='0123456789' and DATE(timestamp) = '2019-07-30'"status: "ok"但是,如果我复制粘贴在 PHPMyAdmin 页面 SQL 中以 JSON 回显的 SQL,它会返回一行,这确实是有意为之,奇怪的是,在脚本中使用 PHP 执行相同的查询时,它不返回任何内容。这是 PHPMyAdmin 查询输出的附加屏幕截图print_r($conn)在输出之后运行回声mysqli Object(    [affected_rows] => 1    [client_info] => 5.6.30    [client_version] => 50630    [connect_errno] => 0    [connect_error] =>     [errno] => 0    [error] =>     [error_list] => Array        (        )    [field_count] => 1    [host_info] => Localhost via UNIX socket    [info] =>     [insert_id] => 0    [server_info] => 5.6.44-cll-lve    [server_version] => 50644    [stat] => Uptime: 94095  Threads: 23  Questions: 77085244  Slow queries: 625  Opens: 814448  Flush tables: 1  Open tables: 5000  Queries per second avg: 819.227    [sqlstate] => 00000    [protocol_version] => 10    [thread_id] => 1035427    [warning_count] => 0)
查看完整描述

2 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

我认为以 0 开头的 user_id 造成了问题。您能否更改 user_id 列的数据类型并将其设为 varchar,然后尝试或从查询中删除 0 以及表行,然后进行检查。它应该工作。


查看完整回答
反对 回复 2021-11-05
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

if (isset($_POST["adds"])) {

    $servername = "localhost";

    $username = "root";

    $password = "root";

    $db = "loc";

    $conn = new mysqli($servername, $username, $password, $db);

    if ($conn->connect_error) {

        die("Connection failed: " . $conn->connect_error);

    }

    $response['is_error'] = 'no';

    $user = $_POST['user'];

    $date = $_POST['date'];

    $sql = "select * from location where user_id='$user' and DATE(timestamp) = '$date'";

    $locations = $conn->query($sql) or $response['is_error'] = 'yes';

    $response['num_rows'] = $locations->num_rows;


    $locations = $locations->fetch_assoc();

    $response['locations'] = $locations;

    $response['date'] = $date;

    if ($response['is_error'] == 'yes') {

        $response['status'] = "failed";

        $response['error'] = $conn->error;

    } else {

        $response['status'] = "ok";

    }

    $response['sql'] = $sql;

    echo json_encode($response);

}

`<html>

<head>

</head>

<body>

    <form method="post">

        <input type="text" name="user"><br>

        <input type="text" name="date"> <br>

        <input type="submit" name="adds">

    </form>

</body>

</html>


查看完整回答
反对 回复 2021-11-05
  • 2 回答
  • 0 关注
  • 104 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信