#php #sql #database #mysqli
#php #sql #База данных #mysqli
Вопрос:
Я искал код для обновления моего изображения из базы данных с YouTube и здесь, в stackoverflow. Но, похоже, я не могу заставить его работать. Изображение может обновляться, но заголовок и текст не могут быть отредактированы. пожалуйста, помогите.
я использую его с помощью php и phpmyadmin
это код, который я пытался обновить:
if (isset($_POST['update'])) {
$id = $_POST['editid'];
$edtitle = $_POST['edittitle'];
$edbody = $_POST['editmyTextarea'];
$file = $_FILES['editpgupload'];
$filename = $file['name'];
$fileTmp = $file['tmp_name'];
$filesize = $file['size'];
$fileerror = $file['error'];
$filetype = $file['type'];
$fileExt = explode('.', $filename);
$fileActExt = strtolower(end($fileExt));
$allowed = array('jpg', 'jpeg', 'png');
if (in_array($fileActExt, $allowed)) {
if ($fileerror === 0) {
if ($filesize < 1000000) {
$filenamenew = uniqid('', true).".".$fileActExt;
$fileds = '../../../image/upload/'.$filenamenew;
move_uploaded_file($fileTmp, $fileds);
$sql = "UPDATE patients_guide SET pg_title = '$edtitle', pg_body = '$edbody', pg_image = '$filenamenew' WHERE pg_id = '$id'";
mysqli_query($conn, $sql);
header("Location: ../index.php?update=success");
}else{
// echo "your image is too large";
header("Location: ../index.php?error=imagetoolarge");
}
}else{
// echo "There was an error uploading your file";
header("Location: ../index.php?error=errorupload");
}
}else{
// echo "You can not upload this file";
header("Location: ../index.php?error=cannotupload");
}
}
он обновляет только изображение, но заголовок и текст остаются неизменными. его нельзя редактировать. это должно быть в состоянии обновить заголовок, тело и изображение.
структура patients_guide
CREATE TABLE `patients_guide` (
`pg_id` int(11) NOT NULL AUTO_INCREMENT,
`pg_title` varchar(100) NOT NULL,
`pg_body` text NOT NULL,
`pg_image` varchar(100) NOT NULL,
PRIMARY KEY (`pg_id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf
Комментарии:
1. Прежде всего, я бы настоятельно рекомендовал использовать подготовленные инструкции. И у меня вопрос: почему вы решили, что другие поля не обновляются?
2. @Alex я хочу, чтобы они были обновлены до. но мои коды обновляют только изображение. я хочу, чтобы заголовок и тело тоже были обновлены
3. Попробуйте проверить, является ли оно или нет
$edtitle
, и$edbody
не является нулевым. Вы можетеecho
посмотреть, что они содержат. Может быть, у вас неправильные ключи в соответствующих$_POST
s?4. @Yuko Спасибо 🙂 Я уже получил это
5. Предупреждение: вы широко открыты для SQL-инъекций и должны действительно использовать параметризованные подготовленные операторы вместо того, чтобы вручную создавать свои запросы. Они предоставляются PDO или MySQLi . Никогда не доверяйте никаким входным данным, особенно тем, которые поступают со стороны клиента. Даже если ваши запросы выполняются только доверенными пользователями, вы все равно рискуете повредить свои данные .
Ответ №1:
Я понял.
Для кого-то, у кого такая же проблема, как и у меня, вот код:
if (isset($_POST['update'])) {
$id = $_POST['editid'];
$edtitle = $_POST['edittitle'];
$edbody = $_POST['editmyTextarea'];
$file = $_FILES['editpgupload'];
$filename = $file['name'];
$fileTmp = $file['tmp_name'];
$filesize = $file['size'];
$fileerror = $file['error'];
$filetype = $file['type'];
//remove old image
unlink('../../../image/upload/'.$row['pg_image']);
$fileExt = explode('.', $filename);
$fileActExt = strtolower(end($fileExt));
$allowed = array('jpg', 'jpeg', 'png');
if (in_array($fileActExt, $allowed)) {
if ($fileerror === 0) {
if ($filesize < 1000000) {
$filenamenew = uniqid('', true).".".$fileActExt;
$fileds = '../../../image/upload/'.$filenamenew;
move_uploaded_file($fileTmp, $fileds);
$sql = "UPDATE patients_guide SET pg_title = '$edtitle', pg_body = '$edbody', pg_image = '$filenamenew' WHERE pg_id = '$id'";
mysqli_query($conn, $sql);
header("Location: ../index.php?update=success");
}else{
// echo "your image is too large";
header("Location: ../index.php?error=imagetoolarge");
}
}else{
// echo "There was an error uploading your file";
header("Location: ../index.php?error=errorupload");
}
}else{
$sql = "UPDATE patients_guide SET pg_title = '$edtitle', pg_body = '$edbody' WHERE pg_id = '$id'";
mysqli_query($conn, $sql);
header("Location: ../index.php?update=success");
}
}