Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL和PHP简介_Php_Sql - Fatal编程技术网

SQL和PHP简介

SQL和PHP简介,php,sql,Php,Sql,我是PHP新手。有人能解释一下这里发生了什么吗? 这是获取传递的GET(url)变量“previd”的值。 类似于http://example.com/page.php?previd=123将设置 上一次改为123 接下来,它将变量$id设置为123 下一个$SQL设置为select*from pro,其中prId=123 下一步,一个邪恶的人可以进入http://example.com/page.php?previd=;放下TABLE pro,您的数据库现在已被删除 这就是为什么人们使用消毒

我是PHP新手。有人能解释一下这里发生了什么吗?

  • 这是获取传递的GET(url)变量“previd”的值。 类似于
    http://example.com/page.php?previd=123
    将设置 上一次改为123
  • 接下来,它将变量$id设置为123
  • 下一个$SQL设置为
    select*from pro,其中prId=123
  • 下一步,一个邪恶的人可以进入
    http://example.com/page.php?previd=;放下TABLE pro
    ,您的数据库现在已被删除
这就是为什么人们使用消毒和准备好的声明

$id=$_GET['previd'];
$SQL = "select * from pro where prId=".$id;

我在约束自己。你进行sql注入,这就是这里发生的事情。如果
DROP TABLE
语句删除了整个数据库,那将非常令人担忧!我的错,表格被删除了,哈哈。哈哈,NP。值得注意的是,虽然应该避免SQL注入漏洞,但多语句执行变体很少出现,因为它要么不受支持(mysql),要么需要特殊处理(mysqli)。然而,对于所有库来说,查询修改仍然是一个风险。
// PDO + MySQL
$pdo = new PDO('mysql:host=example.com;dbname=database', 'user', 'password');
$statement = $pdo->query("SELECT some_field FROM some_table");
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['some_field']);