php - mysql自动将字符串转换为整数

标签 php mysql

我刚刚注意到,如果我执行这样的 MySQL 请求:

SELECT 1 FROM myTable WHERE id = 'asdf'

然后字符串 'asdf' 被转换为 0。 这意味着我有一个 ID 为 0 的记录,这将匹配。 id 字段的格式为 int(8).

最好的方法是什么:

  • 我需要检查(例如通过 PHP)我的值是否仅为数字?
  • 有 MySQL 方法可以做到这一点吗?
  • 我必须删除 ID 为 0 的记录吗? (不好)

最佳答案

只需编写您的查询,这样它们就不会像使用文本字段那样使用数字字段。

如果 id 是一个数字字段,那么您的 where 子句永远不会有用。是的,如果 MySQL 主动提示它会很好 - 但从根本上说,您不应该编写运行错误查询的代码。

该查询是如何进入您的系统的? 'asdf' 部分是直接用户输入吗?可以改用参数化 SQL 吗?

如果您真的打算查询数字字段,您应该首先确保输入的是数字。在调用代码中将文本转换为整数,在数据库中。

关于php - mysql自动将字符串转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10983499/

相关文章:

php - 为什么 authoize.net 返回响应代码 Ok I00001 "Successful"但是,客户的信用卡仍然被拒绝?

mysql - 如何在cassandra和mysql之间做性能测试?

php - 显示记录时如何检查Field是否为空

php - 加入多个表(以下/事件)

php - 防止 Laravel 中的用户帐户同时提款

mysql - 我是否正确计算了 MySQL 数据库的最大连接限制?

php - Laravel SSL 读取操作超时 | swift _IoException | PHP错误?

php - 包括未按预期工作

php - 在 php 中存储这个有序对的更有效方法是什么?

输入留空时phpmyadmin不使用默认值