php сервер и загрузка sql изображений - PullRequest
0 голосов
/ 24 июня 2011

Хорошо,

Я создал страницу вставки изображения (uploader.php) в конце предыдущего поста, касающуюся настройки загрузчика изображений php, но у меня возникли некоторые проблемы ......

Код:

<?php 

$target = "images/test/"; 
$target = $target . basename( $_FILES['photo']['name']); 

$title=$_POST['title']; 
$desc=$_POST['desc'];  
$pic=($_FILES['photo']['name']); 

mysql_connect("dbhost", "dbuser", "dbpass") or die(mysql_error()) ; 
mysql_select_db("dbname") or die(mysql_error()) ;  
mysql_query("INSERT INTO `test` VALUES ('$title', '$desc', '$pic')") ; 

if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 
 { 

echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; 
 } 
 else { 
 echo "Sorry, there was a problem uploading your file."; 
 } 
 ?> 

<form enctype="multipart/form-data" action="uploader.php" method="POST"> 
Title: <input type="text" name="title"><br> 
Description: <input type="text" name = "desc"><br>  
Photo: <input type="file" name="photo"><br> 
<input type="submit" value="Add"> 
</form>

Таким образом, первая проблема заключается в том, что информация не вводится в базу данных - таблица имеет 4 поля - id (int), title (varchar), desc (varchar) и фото (varchar).Это потому что поле id не указано ??Это просто автоинкрементный первичный ключ для таблицы.

Вторая проблема заключается в том, что загружаемое изображение содержит пробелы - например, при загрузке "test image.jpg" - я хотел бы включить str_replace() для создания "testimage.jpg".Вы знаете, где я мог бы вставить это в код?

Еще раз спасибо за любую помощь,

JD

1 Ответ

1 голос
/ 24 июня 2011

Если вы явно не перечислите столбцы в своем операторе вставки, вы должны включить все их в VALUES (), так что да, вам нужно будет включить id

Лучше было бы перечислить столбцы:

mysql_query("INSERT INTO `test` (title, `desc`, photo) VALUES ('$title', '$desc', '$pic')") ;

Обратите внимание, что desc взято в кавычки выше. Это зарезервированное ключевое слово MySQL и там есть синтаксическая ошибка, если не указано в кавычках.

Также, пожалуйста, избегайте ввода значений против SQL-инъекции!

$title = mysql_real_escape_string($_POST['title']); 
$desc = mysql_real_escape_string($_POST['desc']);  
$pic = (mysql_real_escape_string($_FILES['photo']['name']));

// And your space replacement
$pic = str_replace(" ","", $pic);

// Now that it's cleaned up, you can insert.
mysql_query("INSERT INTO `test` (title, `desc`, photo) VALUES ('$title', '$desc', '$pic')") ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...