mysql_fetch_array中输出错误

时间:2013-05-09 13:51:15

标签: php mysql

以下是我的代码片段:

    require_once('functions.php');
    include('dbinfo.php');
    connectdb();


$querys= "SELECT 'score' FROM solve WHERE (problem_id='".$_GET['id']."' AND username='".$_SESSION['username']."')";
            $resultscore=mysql_query($querys);
            $scorefetch=mysql_fetch_array($resultscore);
            $subractscore=$scorefetch['score'];
echo $subractscore;

理想情况下,输出应该是存储在数据库的得分字段中的值。但它是打印'

  

得分

'..我错在哪里?此外,查询一次只会产生一条记录。

1 个答案:

答案 0 :(得分:7)

您的查询无法按预期工作的原因是因为您使用单引号包装列名称。它们(列名和表名)是标识符而不是字符串文字,所以它们不应该用单引号换行。

SELECT score FROM solve WHERE....

如果使用的列名和/或表名是保留关键字,则可以使用反引号转义它们,而不是单引号。

在这种情况下,不需要反引号,因为它们都不是保留关键字。


作为旁注,如果变量的值( s )来自外部,则查询易受SQL Injection攻击。请查看下面的文章,了解如何防止它。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。

相关问题