2016-07-31 2 views
0

У меня есть простая база данных с двумя столбцами - id и file_name. В столбце file_name у меня есть mp3-файлы, такие как Summer of 69.mp3. Теперь я хочу переименовать 10 имен файлов с помощью инструкции UPDATE. Но я попытался обновить только последний файл.Ошибка обновления в столбце MySql с Php

$dbc = mysqli_connect ('host','user','pwd','database') 
    or die ('Error connecting to database'); 

$query = "SELECT * FROM files ORDER BY id DESC LIMIT 10"; 
$result = mysqli_query ($dbc,$query) 
     or die ('Error Came'); 

echo '<form action=rename.php method=post>'; 

while($row = mysqli_fetch_array($result)) { 

$filename = $row['file_name']; 
$fid = $row['id']; 

echo '<input type="text" name="f[]" value="'.$row['file_name'].'" size="50"><br/><br/>'; 

} 

echo '<input name="submit" type="submit" value="update"></form>'; 

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

foreach ($_POST['f'] as $f){ 

$query = "UPDATE files SET file_name ='$f' WHERE id='$fid'"; 
mysqli_query ($dbc,$query) 
     or die ('Error Came'); 
} 
} 

mysqli_close($dbc); 

Любой способ исправить это?

+0

Почему у вас ОТБОРНОЕ вообще ???!? – Strawberry

+0

Наличие столбца select помогает мне получить эти имена файлов в моей форме переименования. –

+0

Вы получаете имена файлов из '$ _POST ['f']', тогда вы должны получать значения из '$ _POST' также как' $ _POST ['fileids'] 'и обновлять имя файла в соответствии с его идентификатором файла. –

ответ

0
if(isset($_POST['submit'])) { 
$f=$_POST['f']; 
foreach ($f as $key=>$value){ 
$query = "UPDATE files SET file_name ='$value' WHERE id=$row[$key]"; 
mysqli_query ($dbc,$query) 
     or die ('Error Came'); 
} 
} 

Это может работать для вас

+0

Thanx для помощи. Но ошибка обновления появляется «Ошибка пришла». –

0

только последний файл обновления, потому что $ FID содержит идентификатор последнего файла.

$i=0; 
while($row = mysqli_fetch_array($result)) { 
if($i==0) 
{$fid = $row['id'];$i++;}//now $fid contains the first file's id 
$filename = $row['file_name']; 


echo '<input type="text" name="f[]" value="'.$row['file_name'].'" size="50"><br/><br/>'; 

} 

В настоящее время в другой части

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

foreach ($_POST['f'] as $f){ 

$query = "UPDATE files SET file_name ='$f' WHERE id='$fid'"; 
mysqli_query ($dbc,$query) 
     or die ('Error Came'); 
$fid++; 
} 
} 
+0

Bro Я попробовал ваш код. Но теперь он обновляет только первый файл. –

+0

@AmitPal вы можете проверить, увеличивается ли значение $ fid каждый раз после этапа обновления? – jophab

+0

Нет. Это обновление только первого файла. –

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