php - 简单查询错误

标签 php sql

我正在运行一个函数来检查用户是否已经提交了问题。我已将问题范围缩小到运行查询代码的函数。由于某种原因它不起作用。当涉及 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/

相关文章:

php - laravel toSql 不返回输出

sql - 从父元素获取属性值 - 仅通过 sql

sql - 如何循环遍历表来查找数据集?

mysql - 如何使用 Union 组合这两个查询?

javascript - 如何在 javascript 或 MySQL 中对数据透视动态数组进行分组?

php - 在功能测试期间,如何使用 Symfony2 的 session 服务持久保存数据?

php - UDK Scaleform 4 AS3 跨域URLRequest 可能吗?

php - mysql查询问题

php - 通知 : Array to string conversion in

mysql - 从一对多关系中只检索一条记录