我定義爲VARCHAR(16)MySQL查詢不返回結果
領域id
和date
當我做這個查詢:
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');
我輸出的查詢,變量正確匹配,沒有錯誤,只有報價。
任何想法爲什麼?我以前從未遇到過這個問題。使用Query Builder處理CodeIgniter 3。
EDIT2:結果摘要迄今:
- 本地主機(MySQL的5.6.24)的作品,服務器(MySQL的5.5.55-0 + deb7u1)沒有。
- 問題發生在我的代碼和服務器上的PHPMyAdmin,但在本地工作,所以我消除了代碼問題。
show variables like 'char%'
查詢顯示所有在本地和服務器上相同的字符集設置。- 數據庫和字段在服務器和本地都具有相同的編碼。
- 似乎並不像許多評論所指出的那樣是個問題,因爲問題不在本地主機上,只存在於服務器上,除非服務器有配置或其他問題。
- ...?
....這是數據類型=日期是一個可以說話的字符串,日期應該用單引號包裝,如果id是一個int字段 - 不需要引號,實際上,如果它是int – ThisGuyHasTwoThumbs
它是類型轉換。不要引用除日期 – clearshot66
@ThisGuyHasTwoThumbs以外的數字但是我的字段被定義爲varchar?我使用CI的查詢生成器,所以我實際上並沒有添加任何引號。他們的圖書館正在自動... –