这是我的代码片段:
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;
Run Code Online (Sandbox Code Playgroud)
理想情况下,输出应该是存储在数据库的得分字段中的值.但它是打印'
得分了
'..我错在哪里?此外,查询一次只能生成一条记录.
您的查询无法按预期工作的原因是因为您使用单引号包装列名称.它们(列名和表名)是标识符而不是字符串文字,因此它们不应该用单引号换行.
SELECT score FROM solve WHERE....
Run Code Online (Sandbox Code Playgroud)
如果碰巧使用的列名和/或表名是保留关键字,则可以使用反引号转义,而不是使用单引号.
在这种情况下,不需要反引号,因为它们都不是保留关键字.
作为一个旁注,查询是脆弱的SQL Injection,如果值(小号变量)从外面走了进来.请查看下面的文章,了解如何防止它.通过使用,PreparedStatements您可以摆脱使用值周围的单引号.
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |