【发布时间】:2024-01-23 00:15:01
【问题描述】:
我制作了一个表单,一旦提交就应该将数据插入数据库。如果我在查询字符串中使用变量名称,例如 INSERT INTO 表(名称,注释)VALUES($name,$comment),它可以工作,但如果我使用 pdo 准备好的语句,它就不起作用,这是我目前拥有的代码:
move_uploaded_file($_FILES["file"]["tmp_name"], "../img/" . $_FILES["file"]["name"]);
$stmt = $conn->prepare('INSERT INTO instructors (name, bio, picture) VALUES (:name, :bio, :picture)');
$stmt->bindParam(':name', $_POST['name']);
$stmt->bindParam(':bio', $_POST['bio']);
$stmt->bindParam(':picture', $_POST['file']['name']);
$stmt->execute();
文件上传并移动到我说的目录,但没有数据插入数据库。任何想法为什么?
【问题讨论】:
-
可能是 SQL 错误。看看
$stmt->errorInfo。 -
看起来你的意思是使用
$_FILES['file']['name']而不是$_POST['file']['name']但这不会导致插入失败,只是一个空白值,除非picture列是NOT NULL。 -
@MichaelBerkowski 当然,根据列,有一个空白值会影响
INSERT? -
除非图片不能为空。那么查询就会失败。也许 Ben 可以发布表模式?
-
请注意:使用用户提供的名称将文件保存在服务器上并不是一个好主意。而是为其生成一个随机名称。