2011-09-15 2 views
-1

я хочу, чтобы загрузить файл на моем PHP, мой код выглядит так:загрузить файл (имя по идентификатору)

$hasil = mysql_query("select ID from userownfile order by ID DESC"); 
$dt = mysql_fetch_array($hasil); 
$old_id = substr($dt['ID'],2); 

$newId = $old_id[0] + 1; 

$base = $_REQUEST['image']; 
$filename = $newId . ".jpg"; 
$buffer = base64_decode($base); 
$path = "img/" . $filename . ".jpg"; 
$handle = fopen($path, 'wb'); 
$numbytes = fwrite($handle, $buffer); 
fclose($handle); 
$conn = mysql_connect("localhost","root",""); 
mysql_select_db("db_bloodglucose"); 
$sql = "insert into userownfile(ID, file) values('" . $newId . "','" . $path . "')"; 
$r = mysql_query($sql); 

на первой загрузки, я succed загрузить файл, имя которого 1 .jpg, но когда я хочу загрузить второй раз и т. д., он не появился в моей базе данных, он продолжает показывать 1.jpg, мне интересно, почему число не увеличилось. Кто-нибудь может мне помочь? благодаря, прежде чем

я был изменить свой код так:

<?php 

$hasil = mysql_query("select ID from userownfile order by ID DESC"); 
$dt = mysql_fetch_array($hasil); 
$old_id = substr($dt['ID'],2); 

$newId = mysql_insert_id() + 1; 

$base = $_REQUEST['image']; 
$filename = $newId . ".jpg"; 
$buffer=base64_decode($base); 
$path = "img/".$filename.".jpg"; 
$handle = fopen($path, 'wb'); 
$numbytes = fwrite($handle, $buffer); 
fclose($handle); 
$conn=mysql_connect("localhost","root",""); 
mysql_select_db("db_bloodglucose"); 
$sql = "insert into userownfile(ID, file) values('" . $newId . "','" . 

$path . "')"; 
$r=mysql_query($sql); 
?> 

, но это держать прилипла к 1, то число не увеличивается, кто может мне помочь, пожалуйста?

+0

Что-нибудь действительно вставлено в базу данных с первой попытки? –

+0

@Handy см. Мой вопрос выше - все ли вставляется в базу данных? –

+0

@pekka, первый из них вставлен в мою базу данных, 1.jpg, но когда я снова попробую 2-й и т. Д., Это не сработало ... я установил свой идентификатор в «нет автоматического приращения» – Handy

ответ

0

Я думаю, ошибка здесь:

$dt = mysql_fetch_array($hasil) 
$old_id = substr($dt['ID'],2); 
$newId = $old_id[0]+1; 

может быть

$newId = $dt[0]+1; 

или просто

$newId = $old_id+1; 

Но гораздо лучше использовать mysql_insert_id, который даст вам вставленной записи идентификатор в избегайте проблем параллелизма.

+0

у меня есть попробовал оба, но он все еще не работал, кстати, я установил свой id в «нет автоматического приращения», это правильно? я понятия не имею, как это сделать, может ли вы показать мне пример, основанный на моем коде? спасибо до – Handy

+0

mysql_insert_id, очевидно, не будет работать, если поле не будет автоматически увеличиваться. Однако в этом случае я считаю, что поле должно быть автоматически увеличивающимся полем! – MrWhite

+0

$ newId = mysql_insert_id ($ hasil); Я пробовал это с автоинкрементами, но второй пришел без имени. просто «.jpg», вот и все, я что-то пропустил? – Handy

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