【问题标题】:SQL Query returns NULL in PHP but works fine in PHPMyAdminSQL 查询在 PHP 中返回 NULL,但在 PHPMyAdmin 中工作正常
【发布时间】:2017-02-18 19:27:52
【问题描述】:

运行此代码:

public function findBooking($start_date, $pitches, $nights, $people, $first_name, $last_name, $email){

    $error = false;
    $bookings = array();

    $this->db_connection = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
    if (!$this->db_connection->connect_errno) {
                   if((!$start_date == '') && (!$nights == '')){
            $end_date = date('Y-m-d', strtotime($start_date. ' + ' . ($nights-1) . ' days'));
        } else {
            $end_date = '';
        }

        $find_booking_sql = "SELECT * FROM booking LEFT JOIN camper ON booking.camper_id = camper.camper_id
                             WHERE (start_date LIKE  '%$start_date%')
                             AND (end_date LIKE  '%$end_date%') 
                             AND (pitches LIKE  '%$pitches%') 
                             AND (people LIKE  '%$people%')
                             AND (first_name LIKE  '%$first_name%')
                             AND (last_name LIKE  '%$last_name%')
                             AND (email LIKE  '%$email%')
                             ORDER BY start_date ASC";
        $find_booking_result = $this->db_connection->query($find_booking_sql);
        if ((!$find_booking_result->num_rows == 0)) {  
            // Not run
            }
        } else {
            $error = 'No bookings found';
        }

    }

    return array(
        'bookings' => $bookings,
        'error' => $this->db_connection->error,
        'debug' => $find_booking_sql,
        'result' => $find_booking_result
    );
}

在 PHP 中运行时返回 current_field":null,"field_count":null,"lengths":null,"num_rows":null,"type":null,但如果我从 PHPMyAdmin 运行 SQL,它可以正常工作。

我检查了类似的问题,但解决方案不适用于此问题 - 我已尝试删除 's,但只有一个查询正在运行。

生成的 SQL 示例:

SELECT *
FROM booking
LEFT JOIN camper ON booking.camper_id = camper.camper_id
WHERE (start_date LIKE '%')
    AND (end_date LIKE '%')
    AND (pitches LIKE '%')
    AND (people LIKE '%')
    AND (first_name LIKE '%')
    AND (last_name LIKE '%') AND (email LIKE '%')
ORDER BY start_date ASC`

【问题讨论】:

  • 对于一个 email LIKE $email 似乎不太可能在没有引号的情况下工作。尝试echo $find_booking_sql; 并在 SQL 中运行输出。
  • 显示你在 phpadmin 中使用的真实查询
  • 用查询编辑并引用 $email 变量 - 我复制了旧版本的代码
  • 也分享php代码,你是如何制作$start_date$end_date,等等...?
  • 这个查询有效?????? SELECT * FROM booking LEFT JOIN camper ON booking.camper_id = camper.camper_id WHERE (start_date LIKE '%') AND (end_date LIKE %) AND (pitches LIKE %) AND (people LIKE %) AND (first_name LIKE '%') AND (last_name LIKE '%') AND (email LIKE '%') ORDER BY start_date ASC

标签: php mysql phpmyadmin


【解决方案1】:

我的错误 - 我在实时的空数据库上运行 PHP 查询,但在临时数据库上运行 PHPMyAdmin 查询。

我切换了数据库,原始代码运行良好。

【讨论】:

    猜你喜欢
    • 2017-08-16
    • 2013-09-30
    • 2011-01-15
    • 2014-09-13
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    相关资源
    最近更新 更多