假设我有这个查询:
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/