我正在运行一个函数来检查用户是否已经提交了问题。我已将问题范围缩小到运行查询代码的函数。由于某种原因它不起作用。当涉及 AND user_requester
... 的部分不存在时,该函数确实可以工作。我确定这是某种语法错误,但我没有从错误报告中得到响应。下面是代码:
function question_exists ($question, $user_id) {
$question = sanitize($question);
$query = mysql_query("SELECT COUNT(`primary_id`) FROM `requests` WHERE
`question_asked`= '$question' AND `user_requester` = $user_id");
return (mysql_result($query, 0) == 1) ? true : false;
}
澄清:我想防止用户两次提交相同的问题。这就是将 AND 部分添加到查询中的 where 子句的目的。当我添加 AND 部分时,一切都会崩溃,用户无论如何都可以提交相同的问题。
最佳答案
我会尝试单独执行所有步骤,以便您可以单独测试每个操作的结果。您的返回线路正在处理很多事情,因此很难判断问题出在哪里。像这样的事情...
function question_exists( $question, $user_id )
{
$question = sanitize( $question );
$user_id = (int) $user_id; // additional sanitization in case you didn't do it already.
$sql = "SELECT COUNT(`primary_id`) FROM `requests` WHERE
`question_asked`= '$question' AND `user_requester` = $user_id";
$result = mysql_query( $sql );
if ( !$result ) {
// Note: this would be better sent to an error handling function, this is just for simplicity's sake.
echo 'Mysql query error: ' . mysql_error();
exit;
}
$row = mysql_fetch_row ( $result );
if ( $row ) {
return true;
} else {
// temporary debug code
echo "unknown error</ br>\n";
echo "sql: " . $sql . "</ br>\n";
echo "<pre>";
var_dump( $row );
echo "</pre>";
exit();
// real code for after problem is solved
return false;
}
}
如果这仍然没有帮助,并且您还没有这样做,请转储您的 $question 和 $user_id 变量,以确保您收到它们并且您的清理函数没有执行错误的操作。请注意,我尚未运行此代码,因此可能存在语法错误。
关于php - 简单查询错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11589837/