本帖最后由 sky94132003 于 2014-06-10 03:40:33 编辑

解决方案 »

  1.   

    确实是新手,还不知道 PDO::quote 方法的存在
    用PDO需要升到5.3.6,是因为直到5.3.6,PDO才具有实用价值。之前的所有版本都存在着各种严重问题prepare 准备
    bindParam 绑定参数
    这是为一条SQL多次使用(仅参数不同)准备的,而无需每轮都组装查询串php 是通过 magic_quotes_gpc 来决定是否对外来数据做转义处理的
    php 5.3.6及以后默认关闭
    php5.4.0及以后忽视它的存在
    也就是说:安全问题是你自己的问题,php不打算替你完成了
      

  2.   

    用了  
    prepare
    bindParam是否也不足够要用PDO::quote?那想请问一下用quote的话不是取代了prepare?
    就不能预处理或者批量insert?
      

  3.   

    预处理后用  execute 和 直接用 query 是两条路
    quote 是转义,对于预处理后的 execute 会自动隐式执行 
    对于 query 需自己显式的执行
      

  4.   

    明白了謝謝但是....
    $sql = "INSERT INTO foo (id,name) VALUES ('',:name)";
    $stmt = $pdo->prepare($sql);$stmt->bindParam(':name', $name);$name = $pdo->quote($_POST["name"]);$stmt->execute();
    比如我输入:peter's book但为什么会保存成'peter's book'这是正常的吗?我输出是要做些处理?