Php 插入到而不是使用bindparam插入

Php 插入到而不是使用bindparam插入,php,pdo,sql-insert,Php,Pdo,Sql Insert,正在尝试在我的表中插入一行。有一匹母马,尝试在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 -

正在尝试在我的表中插入一行。有一匹母马,尝试在
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);    
  • 您不应该允许用户对查询进行任何直接输入
  • 也不应该有用户定义的表名。您的数据库结构错误。它应该是一个预定义的表,用于存储所有用户的数据。因此,它必须是字段内容,而不是表名
  • 您需要首先连接到PDO,并使其正确。请参见中的示例
  • 因此,您将能够看到错误
  • 从错误中,您必须知道
    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);   
    
  • 您不应该允许用户对查询进行任何直接输入
  • 也不应该有用户定义的表名。您的数据库结构错误。它应该是一个预定义的表,用于存储所有用户的数据。因此,它必须是字段内容,而不是表名
  • 您需要首先连接到PDO,并使其正确。请参见中的示例
  • 因此,您将能够看到错误
  • 从错误中,您必须知道
    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);   
    

    然后,通过
    标记,您的代码易受SQL注入攻击。然后,通过
    标记,您的代码易受SQL注入攻击