gpt4 book ai didi

php - 使用php表单将图片上传到mysql

转载 作者:行者123 更新时间:2023-11-30 22:47:28 25 4
gpt4 key购买 nike

我有这个表格可以将图片上传到我的 mysql 数据库:

<h4>Add Photo</h4>

<form enctype="multipart/form-data" method="post">
<?php
require_once 'config.php';
$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

if (isset($_POST['upload'])){
$caption = $_POST['caption'];
$albumID = $_POST['album'];
$file = $_FILES ['file']['name'];
$file_type = $_FILES ['file']['type'];
$file_size = $_FILES ['file']['size'];
$file_tmp = $_FILES ['file']['tmp_name'];
$random_name = rand();

if (empty($file)){
echo "Please enter a file <br>";
} else {
move_uploaded_file($file_tmp, 'uploads/'.$random_name.'.jpg');
mysqli_query(
$mysqli,
"INSERT INTO photos (caption, image_url, date_taken, imageID) "
. "VALUES('"
. addslashes($caption) . "', '"
. $random_name . ".jpeg', NOW(), ?)"
);
echo "Photo successfully uploaded!<br>";
}
}
?>

Caption: <br>
<input type="text" name="caption">
<br><br>

Select Album: <br>
<select name="album">
<?php
$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$result = $mysqli->query("SELECT * FROM albums");
while ($row = $result->fetch_assoc()) {
$albumID = $row['albumID'];
$title = $row['title'];
echo "<option value='$albumID'>$title</option>";
}
?>
</select>
<br><br>

Select Photo: <br>
<input type="file" name="file">
<br><br>

<input type="submit" name="upload" value="Upload">
</form>

我可以成功地将图片上传到我服务器上的“上传”文件夹,但是没有任何内容添加到我数据库的“照片”表中。我的照片文件夹的架构是:标题、图片网址、拍摄日期、图片 ID

我的结构有什么问题吗? mysqli代码?任何帮助将不胜感激!提前致谢!

最佳答案

正如 Fred -ii- 提到的,问题在于您使用的是“?”作为列 imageID 的值,但您没有使用准备好的语句。你不是在检查错误,但如果你这样做了,你会得到类似的东西:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?)' at line xx

此外,您正在使用 addslashes 将用户数据获取到查询中,这是不安全的(您应该使用 mysqli_real_escape_string instead )。

解决这两个问题的一个好方法是使用准备好的语句。你会做这样的事情:

    move_uploaded_file($file_tmp, 'uploads/'.$random_name.'.jpg');
$ret = mysqli_prepare($mysqli, "INSERT INTO photos (caption, image_url, date_taken)
VALUES(?, ?, NOW())");
$filename = $random_name + ".jpeg";
mysqli_stmt_bind_param($ret, "ss", $caption, $filename);
mysqli_stmt_execute($ret);
echo "Photo successfully uploaded!<br>";

更新:由于 ID 是自动生成的,因此我从查询中完全删除了该列。

关于php - 使用php表单将图片上传到mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29198983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com