php - 执行MySQL查询时如何获取错误值?

标签 php mysql sql

假设我有这个查询:

SELECT  *
FROM    students_results
WHERE   full_name LIKE '".trim($_POST['full_name'])."'
 AND mother_name LIKE '".$database->escape_value(trim($_POST['mother_name']))."'
 AND birthday = '".$database->escape_value($_POST['year2'])."'"

我需要向访问者显示一条消息,告诉他输入了错误的名字、错误的母亲名字或错误的年份。

现在,我向用户显示他输入了错误值的消息,我想显示有关他输入了哪些错误值的详细信息。

提前致谢。

最佳答案

好的。有点麻烦:

SELECT
    IF(`full_name` = ?,1,0)
  | IF(`maiden_name` = ?,2,0)
  | IF(`birthday` = ?,4,0)
    AS `correctness_mask`
WHERE
      `full_name` = ? 
   OR `maiden_name` = ?
   OR `birthday` = ?
HAVING 
   `correctness_mask` != 0

如果对于检索到的行,correctness_mask 为 7 (1 | 2 | 4),则您得到了正确的行。对于所有其他行,您必须检查是否在该掩码中设置了适当的位。

顺便说一下,请注意查询中的问号。这是我暗示你使用 prepared statements而不是将 $_POST 值直接插入到您的查询字符串中。

关于php - 执行MySQL查询时如何获取错误值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4649953/

相关文章:

php - MYSQL/PHP 语法错误 - 使用 POST 值

php - php/mysql高分表

c# - 算术溢出 - Int32 MySQL 到 C#

mysql - 加入 MYSQL 表的正确方法

mysql - 无法在 WHERE 子句中使用 MySQL extract() 函数

PHP - 接受多个支付网关

php - php的CURLOPT_USERPWD有什么作用

php - 将静态值添加到 PDO 结果行

mysql - 无需嵌套重写 SQL 查询

sql - 在 SQL Server 中存储日期值的货币数据类型?