正确的查询格式

时间:2015-04-16 16:44:51

标签: php html html5 href

我正在制作一个测试程序,我需要使用此代码:

"href=\"testmng.php?manageqn=" . htmlspecialchars_decode($r['testname'], ENT_QUOTES) . "?subjectname=". htmlspecialchars_decode($r['subname'], ENT_QUOTES)

我的问题是manageqnsubjectname具有正确值时的正确格式:

else if ((isset($_REQUEST['manageqn'])) && (isset($_REQUEST['subjectname']))) {

$testname = $_REQUEST['manageqn'];
$subname = $_REQUEST['subjectname'];
$result = executeQuery("select testid from test where testname='" . htmlspecialchars($testname, ENT_QUOTES) . "';");

if ($r = mysql_fetch_array($result)) {
    $_SESSION['testname'] = $testname;
    $_SESSION['subjectname'] = $subname;
    $_SESSION['testqn'] = $r['testid'];

    header('Location: prepqn.php');
}
}

1 个答案:

答案 0 :(得分:1)

假设您正在使用mysqli连接到数据库,您需要使用myqli_real_escape_string() PHP函数来转义字符串,否则您可能会冒险将sql注入添加到您的应用程序中:

executeQuery("select testid from test where testname='" . myqli_real_escape_string($testname) . "';");

我建议使用mysqli提供的预准备语句功能切换到参数化查询方法。然后你可以executeQuery()这样:

executeQuery("select testid from test where testname=?", $testname)

无需转义字符串以便进行安全查询。

如果您使用已弃用的mysql驱动程序,则应使用mysql_real_escape_string()