在mysql_query()函数中执行多查询

时间:2011-11-26 11:04:16

标签: php mysql sql-injection

假设我有这样的查询:

$std_id =   $_POST['std_id'];
$name   =   $_POST['name'];
$family =   $_POST['family'];

$sql    =   "insert into student set
 std_id =   $std_id,
 name   =   '$name',
 family =   '$family'"; 
$query  =   mysql_query($sql,$conn); 

我在一本php安全书中读到,如果用户为家庭字段输入一个值,如:

ahmad';drop database test#

可以删除数据库测试;

但我们知道mysql_query()函数只允许执行一个查询 我想知道这个输入怎么不安全

3 个答案:

答案 0 :(得分:3)

仅仅担心多个查询并不足以保护SQL安全性......有太多问题/答案可供您阅读有关此主题的内容..

php.net上也是不错的资源

答案 1 :(得分:3)

你的问题有很多妄想 让我们解决它们。

  1. mysql_query()不支持支持多个查询执行 (所以删除任何内容都没用)
  2. 在单独的查询中删除表是SQL注入的唯一方法 (所以,再删除任何东西都没用)
  3. 为了保护您的查询,您必须遵循一些众所周知的技术,而不是一些可疑效率的手工制作发明。

答案 2 :(得分:0)

使用以分号分隔的多个查询不是利用查询的唯一方法,它只是一个非常简单的示例。当您使用mysqli_multi_query()时,它将起作用。