相关疑难解决方法(0)

PDO准备好的语句是否足以阻止SQL注入?

假设我有这样的代码:

$dbh = new PDO("blahblah");

$stmt = $dbh->prepare('SELECT * FROM users where username = :username');
$stmt->execute( array(':username' => $_REQUEST['username']) );
Run Code Online (Sandbox Code Playgroud)

PDO文件说:

准备语句的参数不需要引用; 司机为你处理.

这真的是我需要做的就是避免SQL注入吗?这真的很容易吗?

如果它有所作为,你可以假设MySQL.另外,我真的只是对使用针对SQL注入的预处理语句感到好奇.在这种情况下,我不关心XSS或其他可能的漏洞.

php security pdo sql-injection

631
推荐指数
6
解决办法
20万
查看次数

PDO bindParam问题

可能重复:
PHP PDO语句是否可以接受表名作为参数?

我班上有一个功能,它有点麻烦.这里的功能

function insert($table,$column = array(),$value = array())
{
    $array1 = implode(",", $column);
    $array2 = implode(",", $value);

    try 
    { 
        $sql = $this->connect->prepare("INSERT INTO :table (:date1) VALUES (:date2)");  
        $sql->bindParam(':table',$table, PDO::PARAM_STR);
        $sql->bindParam(':data1',$array1, PDO::PARAM_STR);
        $sql->bindParam(':data2',$array2, PDO::PARAM_STR);

        $sql->execute();

    }  
    catch(PDOException $e) 
    {  
        echo $e->getMessage();  
    }  
}
Run Code Online (Sandbox Code Playgroud)

我用以下函数调用该函数:

-> insert('coupons',array('categorie','name','link','code','id'),array('test11','test','test','test','NULL'));
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

警告:PDOStatement :: execute()[pdostatement.execute]:SQLSTATE [HY093]:参数号无效:参数未在第46行的C:\ xampp\htdocs\MYFRAMEWORK\lib\database.class.php中定义

第46行是:

$sql->execute();
Run Code Online (Sandbox Code Playgroud)

所以现在我真的没有看到问题出在哪里.有什么指针吗?

php mysql pdo

0
推荐指数
1
解决办法
2621
查看次数

标签 统计

pdo ×2

php ×2

mysql ×1

security ×1

sql-injection ×1