【问题标题】:INSERT INTO not inserting using bindparamINSERT INTO 不使用 bindparam 插入
【发布时间】:2013-04-08 08:28:53
【问题描述】:

试图在我的表中插入一行。有一匹母马,尝试在tinterweb 上使用数十个示例都没有成功,我一定是不明白 PDO 是如何工作的。

$stmt = $dbh->prepare ("INSERT INTO table_name (date, link, desc) 
VALUES (:date,:name,:desc)");
$stmt -> bindParam(':date', $date);
$stmt -> bindParam(':name', $name);
$stmt -> bindParam(':desc', $desc);
$stmt -> execute();

move_uploaded_file($_FILES["file"]["tmp_name"], $upload);    

【问题讨论】:

  • 那么你的代码容易受到SQL注入的攻击
  • 通过<select>标签

标签: php pdo sql-insert


【解决方案1】:
  1. 您不应允许用户对您的查询进行任何直接输入。
  2. 也不应该有用户定义的表名。您的数据库结构错误。它应该是一个预定义表来存储所有用户的数据。所以,它必须是字段内容,而不是表名
  3. 您需要先连接到 PDO,并正确连接。请参阅PDO tag wiki 中的示例
  4. 因此,您将能够看到错误。
  5. 从错误中你必须知道desc是保留字,必须格式化。

所以,代码必须是

$stm = $dbh->prepare("INSERT INTO table (date,link,`desc`,type) VALUES (?,?,?,?)");
$stm->execute(array($date,$name,$desc,$type));

move_uploaded_file($_FILES["file"]["tmp_name"], $upload);   

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    相关资源
    最近更新 更多