php - MySQL查询没有返回结果

标签 php mysql codeigniter

我将字段 iddate 定义为 VARCHAR(16)

当我执行此查询时:

SELECT * 
FROM `members` 
WHERE `id` = '4412040999876'
AND `date` = '201706054783'

我没有得到任何结果。

当我这样做时:

SELECT * 
FROM `members` 
WHERE `id` = 4412040999876
AND `date` = 201706054783

注意 - 没有引号 - 我得到了我期望的结果。

编辑:这是使用的代码 - 我没有手动添加引号。 CI 的 DB 类正在添加它们。

public function get_member_match($id, $mem, $field = 'name')
{
    $sql = "
        SELECT *
        FROM `members`
        WHERE `id` = ?
        AND `" . $field . "` = ?
    ";
    $sql_array = array($id, $mem);
    $q = $this->db->query($sql, $sql_array);
    return $q->result_array();
}

我称这个函数为:

$this->members_model->get_member_match($id, $date, 'date');

我输出查询,变量匹配正确,没有错误,只有引号。

知道为什么吗?我以前从来没有遇到过这个问题。使用查询生成器处理 CodeIgniter 3。

EDIT2:到目前为止的调查结果摘要:

  1. 本地主机 (MySQL 5.6.24) 工作,服务器 (MySQL 5.5.55-0+deb7u1) 不工作。
  2. 问题出现在我的代码和服务器上的 PHPMyAdmin 中,但在本地有效,因此我消除了代码问题。
  3. show variables like 'char%' 查询显示本地和服务器上的所有字符集设置相同。
  4. 数据库和字段在服务器和本地具有相同的编码。
  5. 似乎不像许多评论所暗示的那样是类型转换问题,因为问题不存在于本地主机上,只存在于服务器上,除非服务器有配置或其他问题。
  6. ...?

最佳答案

id 可能在您的数据库中被定义为整数。要匹配整数字段,您不需要使用引号。匹配字符串或文本字段时使用引号。

关于php - MySQL查询没有返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43917259/

相关文章:

php - 让 jQuery 自动完成与 PHP 源一起工作

php - 如何在 SocialEngine 中更新表格

mysql - 0000-00-00 00 :00:00 date in table when is set to be NOT NULL

php - Codeigniter 在数字列上返回单行

javascript - 想要生成带有猫头鹰图像的轮播

php - Laravel - 如何创建多个用户角色并为其分配权限?

php - Codeigniter 搜索查询,我想在搜索中添加另一个条件

mysql - 使用 Active Record 在 CodeIgniter 中进行完全外部连接

php - 从数据库中删除成员后无法登录 ExpressionEngine

mysql - 从表中获取具有最高修订 ID 值的行数据