当我用其他文本字段将图像上传到MySQL数据库时,我遇到了问题。问题是我的文本字段数据插入另一列,图像文件插入另一列,同时单击注册按钮。不知道是什么问题。 Heres是我的代码。
<?php
// include 'connection.php';
ini_set('mysqli.connect_timeout', 300);
ini_set('default_socket_timeout', 300);
if (isset($_POST['submit'])) {
}
function fieldData(){
$con = mysqli_connect('localhost','root','','a.m.system');
if(! $con ) {die('Could not connect: ' . mysqli_error());}
//setting field variables
$fname = $_POST['first_name'];
$lname = $_POST['last_name'];
$gender = $_POST['gender'];
$DOB = $_POST['dob'];
$batch = $_POST['batch'];
$address = $_POST['address'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$sqlInsert="INSERT into students
(STD_First_Name,STD_Lastt_Name,STD_Gender,STD_DOB
,STD_Email,STD_Phone,STD_Address,STD_Batch)
VALUES ('$fname' , '$lname' , '$gender' ,'$DOB', '$email',
'$phone', '$address', '$batch') ";
if (mysqli_query($con, $sqlInsert)) {
$message = "Updated Successfully";
echo "<script type='text/javascript'>alert('$message');</script>";
}else{
echo "<script type='text/javascript'>alert('Error Inserting!!');
</script>" . mysqli_error($con);
}
}
if (getimagesize($_FILES['image']['tmp_name']) == false) {
echo "Please select an image!";
}else{
$image = addslashes($_FILES['image']['tmp_name']);
$name = addslashes($_FILES['image']['name']);
$image = file_get_contents($image);
$image = base64_encode($image);
fieldData();
saveImage($image);
}
//displayImage();
//save image func
function saveImage($image){
$conn = mysqli_connect('localhost','root','','a.m.system');
if(! $conn ) {die('Could not connect: ' . mysqli_error());}
$qry = " INSERT INTO students (STD_Image) values ('$image') ";
$res = mysqli_query($conn, $qry);
if ($res) {
echo "<br>Image Uploaded";
}else{
echo "<br>Image not Uploaded";
}
}
mysqli_close($conn);
?>
答案 0 :(得分:0)
你正在做两个单独的插入,是你的问题。因此,第一个插入创建您的用户条目。第二个插入只用图像创建一个空记录。
您需要将代码重构为:
1)将第二个插入更改为更新语句。您需要将STD_ID传递给它(使用LAST_INSERT_ID()函数在第一次插入后获取id)并将其传递给saveImage()函数。当你在它时,也传递$ con,所以你不必创建另一个与数据库的连接。
2)将所有代码移到一个地方。意思是,在同一时间构建一个包含图像的插入语句,这样你就不需要两次了。
我对您的脚本进行了一些优化,但上述内容涵盖了您的问题。
答案 1 :(得分:0)
简单来说,
在第一个查询中,您已将数据插入一行。
所以,
您需要UPDATE
行插入图像。
但
您使用INSERT
:(
答案 2 :(得分:0)
首先在服务器的某个目录中上传照片。然后在像$photo = "/photo/xyz.png"
在students
表中添加一个字段以供拍照。现在,您的表结构包含以下字段,如STD_First_Name, STD_Lastt_Name, STD_Gender,STD_DOB, STD_Email,STD_Phone,STD_Address,STD_Batch,photo
$photo variable will be stored in `photo` field.
永远不要在数据库中上传照片。仅在数据库中存储服务器的照片路径。
*****我的建议:使用PDO而不是mysqli ****