基本上我有一个表单,当提交它将数据发送到MySQL表时,表单输入的内容是文件上传,所以我必须检查它是否真的是图像。
所以,如果我在这里使用此代码将其发送到数据库:
$sql="INSERT INTO anuncio (anuncio_imagen, anuncio_titulo, anuncio_descripcion, anuncio_categoria, anuncio_precio, anuncio_nombre, anuncio_telefono, anuncio_email, anuncio_facebook)
VALUES ('$imagen', '$titulo', '$descripcion', '$categoria', '$precio', '$nombre', '$telefono', '$email', '$facebook')";
它完美无缺,但是我想查看上传的文件是否是图像,所以我将上面的代码分成两个插入,并放置在图像检查代码内的图像插入,并保留其余的输入字段。
这是:
$imagen = ($_FILES['photo']['name']);
$titulo = mysqli_real_escape_string($con, $_POST['titulo']);
$descripcion = mysqli_real_escape_string($con, $_POST['descripcion']);
$categoria = mysqli_real_escape_string($con, $_POST['categoria']);
$precio = mysqli_real_escape_string($con, $_POST['precio']);
$nombre = mysqli_real_escape_string($con, $_POST['nombre']);
$telefono = mysqli_real_escape_string($con, $_POST['telefono']);
$email = mysqli_real_escape_string($con, $_POST['email']);
$facebook = mysqli_real_escape_string($con, $_POST['facebook']);
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["photo"]["name"]);
$extension = end($temp);
if ((($_FILES["photo"]["type"] == "image/gif")
|| ($_FILES["photo"]["type"] == "image/jpeg")
|| ($_FILES["photo"]["type"] == "image/jpg")
|| ($_FILES["photo"]["type"] == "image/pjpeg")
|| ($_FILES["photo"]["type"] == "image/x-png")
|| ($_FILES["photo"]["type"] == "image/png"))
&& ($_FILES["photo"]["size"] < 10000000)
&& in_array($extension, $allowedExts)) {
if ($_FILES["photo"]["error"] > 0) {
echo "Error: " . $_FILES["photo"]["error"] . "<br>";
} else {
if (file_exists("images/gallery/" . $_FILES["photo"]["name"])) {
echo $_FILES["photo"]["name"] . " Ya existe en el servidor. ";
} else {
move_uploaded_file($_FILES["photo"]["tmp_name"],
"images/gallery/" . $_FILES["photo"]["name"]);
$sql="INSERT INTO anuncio (anuncio_imagen)
VALUES ('$imagen')";
}
}
} else {
echo "Archivo invalido ";
}
$sql="INSERT INTO anuncio (anuncio_titulo, anuncio_descripcion, anuncio_categoria, anuncio_precio, anuncio_nombre, anuncio_telefono, anuncio_email, anuncio_facebook)
VALUES ('$titulo', '$descripcion', '$categoria', '$precio', '$nombre', '$telefono', '$email', '$facebook')";
但是当我这样做时它不起作用,图像数据没有上传到我的数据库,其余数据上传但不上传图像数据。我做错了什么?
答案 0 :(得分:0)
用UPDATE语句替换第二个INSERT语句。第一个INSERT在表中创建行,其中包含您在那里提供的所有列值。在第二个语句中,您希望使用新值更新已创建的行。
答案 1 :(得分:0)
仅使用一个INSERT
并使用mysqli_query
。检查move_uploaded_file
返回是否为真。尝试:
<?php
$imagen = ($_FILES['photo']['name']);
$titulo = mysqli_real_escape_string($con, $_POST['titulo']);
$descripcion = mysqli_real_escape_string($con, $_POST['descripcion']);
$categoria = mysqli_real_escape_string($con, $_POST['categoria']);
$precio = mysqli_real_escape_string($con, $_POST['precio']);
$nombre = mysqli_real_escape_string($con, $_POST['nombre']);
$telefono = mysqli_real_escape_string($con, $_POST['telefono']);
$email = mysqli_real_escape_string($con, $_POST['email']);
$facebook = mysqli_real_escape_string($con, $_POST['facebook']);
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["photo"]["name"]);
$extension = end($temp);
$bol_image = false;
if ((($_FILES["photo"]["type"] == "image/gif")
|| ($_FILES["photo"]["type"] == "image/jpeg")
|| ($_FILES["photo"]["type"] == "image/jpg")
|| ($_FILES["photo"]["type"] == "image/pjpeg")
|| ($_FILES["photo"]["type"] == "image/x-png")
|| ($_FILES["photo"]["type"] == "image/png"))
&& ($_FILES["photo"]["size"] < 10000000)
&& in_array($extension, $allowedExts)) {
if ($_FILES["photo"]["error"] > 0) {
echo "Error: " . $_FILES["photo"]["error"] . "<br>";
} else {
if (file_exists("images/gallery/" . $_FILES["photo"]["name"])) {
echo $_FILES["photo"]["name"] . " Ya existe en el servidor. ";
} else {
if (move_uploaded_file($_FILES["photo"]["tmp_name"],
"images/gallery/" . $_FILES["photo"]["name"])){
$bol_image = true;
} else{
echo "Problem in upload the image";
}
}
}
} else {
echo "Archivo invalido ";
}
if($bol_image){
$sql="INSERT INTO anuncio (anuncio_titulo, anuncio_descripcion, anuncio_categoria, anuncio_precio, anuncio_nombre, anuncio_telefono, anuncio_email, anuncio_facebook, anuncio_imagen)
VALUES ('$titulo', '$descripcion', '$categoria', '$precio', '$nombre', '$telefono', '$email', '$facebook', '$imagen')";
} else{
$sql="INSERT INTO anuncio (anuncio_titulo, anuncio_descripcion, anuncio_categoria, anuncio_precio, anuncio_nombre, anuncio_telefono, anuncio_email, anuncio_facebook)
VALUES ('$titulo', '$descripcion', '$categoria', '$precio', '$nombre', '$telefono', '$email', '$facebook')";
}
mysqli_query($con, $sql);
?>
答案 2 :(得分:0)
INSERT INTO
仅在记录(行)尚不存在时才有效。如果您想分两步完成,您可以在第二个语句中使用UPDATE
。例如:
您的代码:
move_uploaded_file($_FILES["photo"]["tmp_name"],
"images/gallery/" . $_FILES["photo"]["name"]);
$sql="INSERT INTO anuncio (anuncio_imagen)
VALUES ('$imagen')";
相反:
move_uploaded_file($_FILES["photo"]["tmp_name"],
"images/gallery/" . $_FILES["photo"]["name"]);
$sql="UPDATE anuncio
SET anuncio_imagen = ('$imagen')
WHERE anuncio_titulo = ('$titulo')";