#php #mysql #sql-update
#php #mysql #sql-обновление
Вопрос:
Я действительно изо всех сил пытаюсь добиться чего-то очень простого.
По сути, у меня есть вызываемая таблица изображений galleryimages
и местоположение на сервере, где хранятся изображения. То, что я пытаюсь сделать, это перезаписать исходное поле для данной категории в таблице во время загрузки.
Мой код добавит новое изображение на сервер, но по какой-то причине не обновит таблицу MySQL (однако я могу добавить к ней новые строки, хотя я хочу сохранить существующие данные в таблице и просто изменить поле «фото», в котором находится изображение).
Мой PHP:
<?php include 'dbc.php'; page_protect();
if(!checkAdmin()) {header("Location: login.php");
exit();
}
$host = $_SERVER['HTTP_HOST'];
$host_upper = strtoupper($host);
$login_path = @ereg_replace('admin','',dirname($_SERVER['PHP_SELF']));
$path = rtrim($login_path, '/\');
foreach($_GET as $key => $value) {
$get[$key] = filter($value);
}
foreach($_POST as $key => $value) {
$post[$key] = filter($value);
}
?>
<?php
if($_FILES['photo'])
{
$target = "galleries/test/";
$target = $target . basename( $_FILES['photo']['name']);
$title = mysql_real_escape_string($_POST['title']);
$pic = "galleries/test/" .(mysql_real_escape_string($_FILES['photo']['name']));
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target))
{
mysql_query("update `galleryimages` set (`title`, `photo`) VALUES ('$title', '$pic')") ;
echo "Success";
}
else
{
echo "Failure";
}
}
?>
And the HTML is:
```html
</head>
<body>
<form enctype="multipart/form-data" action="addgallery1.php" method="POST">
<table width="100%" border="2" cellpadding="5"class="myaccount">
<tr>
<td>Category: </td>
<td><select name="title" id="select8">
<option value="Landscape Pots">Landscape Pots</option>
</select></td>
</tr>
<tr>
<td>Image: </td>
<td><input type="file" name="photo" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" class="CMSbutton" value="Add" /></td>
</tr>
</table>
</form>
</body>
</html>
Теперь я уверен, что проблема существует в строке:
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target))
{
mysql_query("update `galleryimages` set (`title`, `photo`) VALUES ('$title', '$pic')") ;
echo "Success";
}
но нужна помощь, чтобы определить, действительно ли это так — и если да, то как я могу заставить его обновить таблицу MySQL — на данный момент PHP повторяет успех, но не вносит никаких обновлений в столбец «фото» в MySQL.
Надеюсь, это имеет смысл, и один из вас, гениев кодирования, может помочь мне решить эту проблему — мне потребовались часы проб и ошибок, но я все еще не могу заставить его работать!!!
заранее спасибо за любую помощь
JD
Ответ №1:
здесь что-то не так
mysql_query("update `galleryimages` set (`title`, `photo`) VALUES ('$title', '$pic')") ;
это должно быть похоже
mysql_query("update `galleryimages` set `title`='$title', `photo`= '$pic'") ;
дополнительная информация здесь: http://dev.mysql.com/doc/refman/5.0/en/update.html
Ответ №2:
Ваш запрос MySQL неверен:
update `galleryimages` set `title`='$title', `photo`='$pic'
Но имейте в виду: это обновит ВСЕ строки в этой таблице! Вы должны добавить WHERE
предложение для обновления одной конкретной строки.