【发布时间】:2012-08-15 20:06:36
【问题描述】:
我正在尝试使用PHP 将HTML 表单数据传递给MYSQL 数据库并将数据返回给浏览器。通过提交检查权限(M1,M2,MN1..)我想显示拥有这些权限的教师的姓名。现在,请告诉我代码有什么问题:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head><body>
<form action="akcja.php" method="post">
<br /><br /><br />
<table>
<tr><th><br/><input type="checkbox" id="check" name="M1" value="M1,">m1</th>
<th><br/><center><input type="checkbox" id="check" name="M2" value="M2,">m2</center></th>
<th><br/><center><input type="checkbox" id="check" name="MN1" value="MN1,"> mn1 </center></th> </tr></table>
<input type="submit" name="submit" value="Search Database" />
</form>
</body>
</html>
<?php
$query = mysql_query("SELECT * FROM permissions WHERE m LIKE '".$_POST['M1']."' OR m LIKE '".$_POST['M2']."' OR mn LIKE '".$_POST['MN1']."' ");
if($query)
while($permissions = mysql_fetch_assoc($query)){
$query2 = mysql_query("SELECT name_surname FROM instruktorzy WHERE instruktor_id='".$permissions['instruktor_id']."'");
while($Mdwa = mysql_fetch_assoc($query2)){
echo "<p style=\"font-size: 14px; font-family: Helvetica; background-color: #FFFFFF\"> ".$Mdwa['name_surname']."<br />" ; "</p>" ;
}
}
?>
【问题讨论】:
-
除了使用不安全的 SQL 查询构建和
mysql_不确定没有你说什么不起作用。 -
永远不要在未清理数据的情况下存储 $_POST 变量。您对 SQL 注入完全开放。
-
是的,你应该使用类似:
$m2 = isset($_POST['M2']) ? $_POST['M2'] : null来停止E_NOTICE这样的错误 -
有关消毒的其他信息:net.tutsplus.com/tutorials/php/… if ($_POST['m1']) { $conditional .= 'm LIKE' .消毒($_POST['m1']);您需要有条件地构建该查询。 $query = 'SELECT * FROM permissions WHERE m LIKE ' 。 $条件;
-
这可能无助于回答您的问题,但您应该停止使用
mysql_*函数。它们正在被弃用。请改用PDO(PHP 5.1 起支持)或mysqli(PHP 4.1 起支持)。如果您不确定要使用哪一个,read this article。