正确的查询格式
Right format for query
我正在制作一个测试程序,我需要在其中使用此代码:
"href=\"testmng.php?manageqn=" . htmlspecialchars_decode($r['testname'], ENT_QUOTES) . "?subjectname=". htmlspecialchars_decode($r['subname'], ENT_QUOTES)
我的问题是当 manageqn
和 subjectname
具有正确的值时什么是正确的格式:
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');
}
}
假设您正在使用 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()
.
我正在制作一个测试程序,我需要在其中使用此代码:
"href=\"testmng.php?manageqn=" . htmlspecialchars_decode($r['testname'], ENT_QUOTES) . "?subjectname=". htmlspecialchars_decode($r['subname'], ENT_QUOTES)
我的问题是当 manageqn
和 subjectname
具有正确的值时什么是正确的格式:
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');
}
}
假设您正在使用 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()
.