2014-11-04 4 views
0

Я работаю над проектом для загрузки изображений в каталог и сохранения путей изображения в таблице базы данных. Загрузка изображения работает нормально, но мой ввод текста для имени не работает. Мне нужна ваша помощь.Ошибка ввода базы данных MySQL

if(isset($_POST['upload'])) 
{ 

$path=$path.$_FILES['file_upload']['name']; 

if(move_uploaded_file($_FILES['file_upload']['tmp_name'],$path)) 
{ 
echo " ".basename($_FILES['file_upload']['name'])." has been uploaded<br/>"; 
echo '<img src="gallery/'.$_FILES['file_upload']['name'].'" width="48" height="48"/>'; 
$img=$_FILES['file_upload']['name']; 
    $query="insert into imgtables (name,imgurl,date) values('$name',STR_TO_DATE('$dateofbirth','%d-%m-%y'),'$img',now())"; 
    if($sp->query($query)){ 
    echo "<br/>Inserted to DB also"; 
    }else{ 
     echo "Error <br/>".$sp->error;  
    } 
} 
else 
{ 
echo "There is an error,please retry or ckeck path"; 
} 
} 

?> 

форма выглядит следующим образом:

<form action="gallery.php" method="post" enctype="multipart/form-data"> 
<table width="384" border="1" align="center"> 

<tr> 
<td width="108">Name</td> 
<td><input type="text" name="name"></td> 
</tr> 
<tr> 
<td width="108">Select File</td> 
<td width="260"><label><input type="file" name="file_upload"></label></td> 
</tr> 
<tr> 
<td></td> 
<td><label><input type="submit" name="upload" value="Upload File"></label></td> 
</tr> 
</table> 
</form> 
+2

Вы должны взглянуть на сообщение об ошибке mysql. – Sirko

+0

Когда я эхо ($ query), ошибка не указана, поскольку некоторые столбцы (imgurl и date) успешно заполнены, за исключением одного столбца с именем name. –

+1

И где вы задаете '$ name'? Он не установлен в предоставленном образце кода (если только 'register_globals' включен, но это было бы неплохо ...). – Sirko

ответ

1

Очевидно, что переменная $name пуста или не определено, и поэтому все остальные столбцы заполняются и не этот. Кроме того, поскольку запрос действителен, вы не получаете никаких ошибок.

Вы можете подтвердить это с помощью простой:

echo($name); 

Не относится к вашей проблеме:

  • Ваш код кажется уязвимой для SQL injection: использовать prepared statement, чтобы предотвратить это.
  • Включен register_globals? Если это так, вам стоит подумать об отключении. Чтобы узнать, почему, посмотрите на Why is REGISTER_GLOBALS so bad?.
+0

Спасибо. Я исчислил переменные, и теперь он работает. Но мне нужно подготовить заявление сейчас. С уважением –

Смежные вопросы