在mySQL 中,像SELECT * FROM table WHERE email=0 這樣的查詢意外傳回所有行,儘管缺少'0 ' 表格的電子郵件欄位中的值。發生這種情況是因為電子郵件欄位(通常是 varchar 類型)會自動轉換為整數。
由於 varchar 字段可以容納非數字字符,因此任何缺少有效整數表示形式的電子郵件字符串都將預設為 0。此轉換可能會導致錯誤匹配和潛在的安全漏洞。
為了在不修改查詢的情況下避免此問題,確保字串欄位僅與字串值進行比較至關重要。此類比較的正確查詢格式為:
<code class="sql">SELECT * FROM table WHERE email='0';</code>
透過將比較值括在單引號 (' ') 中,電子郵件欄位仍保留為字串,從而防止數字轉換並確保準確匹配。
以上是如何透過防止數位轉換來避免 MySQL 查詢中的錯誤匹配的詳細內容。更多資訊請關注PHP中文網其他相關文章!