2014-01-30 76 views
0

我的代碼正常運行,但如果$文件有三個項目,然後成功插入成功消息打印三次。但我需要一次打印消息。成功打印多次

for($i = 1; $i <= count($file); $i++){ 
     $insert=mysqli_query($con,"INSERT INTO song (song_name, song_url, album,artist) 
     VALUES ('".current(explode(".", $file))."', '".$file."','".$album."','".$artist."')"); 

     if($insert){    
      print'Success';   
     }else{ 
      print''.mysql_error().'';   
     } 
    } 
+0

它會打印多次,因爲你使用循環,只要'$ insert'將會打印成功 –

回答

0

寫這樣說:

$success = true; 
for($i = 1; $i <= count($file); $i++) 
{ 
    $insert=mysqli_query($con,"INSERT INTO song (song_name, song_url, album,artist) 
    VALUES ('".current(explode(".", $file))."', '".$file."','".$album."','".$artist."')"); 

    if(!$insert) 
    { $success = false; 
     print''.mysql_error().''; 
    } 
} 
if($success){ 
    print'Success'; 
} 

僅打印「成功」而已,如果所有queriey成功,它將只打印一次。

您應該考慮mysqli_*而不是mysql_*,因爲此功能由於安全問題已被棄用。

+0

請不要使用'mysql_ *'... –

+0

@RoyMJ shanto使用這個命令,所以我只是把它放在那裏。這個問題關注另一個話題,所以我沒有寫在mysqli中,這可能只會增加混淆。 – maja

+0

:發佈爲答案時,您應該期待發布最佳方法。 –

0

試試這個:(你也寫mysql_error代替mysqli_error,這樣可以修復它。)

$success = 0; 
for($i = 1; $i <= count($file); $i++) 
{ 
    $insert=mysqli_query($con,"INSERT INTO song (song_name, song_url, album,artist) 
    VALUES ('".current(explode(".", $file))."', '".$file."','".$album."','".$artist."')"); 


    if($insert) 
    { 
     $success = 1; 
    } 
    else 
    { 
     print''.mysqli_error($con).''; 
     $success = 0; 
     break; 
    } 


} 
if($success) 
print'Success'; 
+0

即使除最後一個查詢以外的所有查詢都失敗,這將打印成功。並且它也會失敗,如果$文件的數量是0。 – maja

+0

錯誤。這將只在所有查詢都成功時打印成功。如果你的查詢失敗了,這將不會被稱爲成功嗎? 請再檢查一次。我很確定這個代碼會在成功設置爲零後出現mysql錯誤,從而阻止「成功」被打印,從而打破循環。 –

+0

另外,如果$ file爲零,則永遠不會設置成功,因此永遠不會是真的。因此不打印「成功」。 –

0

停止使用mysql_ *函數,它們已被棄用。

試試這個:在這種方式

$error = false; 
for($i = 1; $i <= count($file); $i++){ 
     $insert=mysqli_query($con,"INSERT INTO song (song_name, song_url, album,artist) 
     VALUES ('".current(explode(".", $file))."', '".$file."','".$album."','".$artist."')"); 

     if($insert){  
      $error = true;  
     } 
     else{ 
      $error = false; 
      print''.mysql_error().'';  
     } 
    } 
if($error) { 
    print 'Success'; 
} 
+1

'if($ error){print'Success'; ''語義混淆。 – MichaelRushton

+0

避免使用'mysql_ *'.. –

+0

@RoyMJ Point添加。 :) –

0

使用

function abc(){ 
    $flag = "";  
    for($i = 1; $i <= count($file); $i++) 
     { 
      $insert=mysqli_query($con,"INSERT INTO song (song_name, song_url, album,artist) 
      VALUES ('".current(explode(".", $file))."', '".$file."','".$album."','".$artist."')"); 
     if($insert) 
     { 
      $flag = true; 
     } 
     else 
     { 
     print''.mysql_error().''; return; 
     } 
    } 
    if($flag == true){ 
     print 'success'; 
    } 
} 
+0

這將打印成功,即使只有一個查詢成功。 – maja

+0

現在,請參閱修改後的ans –

1

你可以做類似如下:

$errors = array(); 

for ($i = 1, $n = count($file); $i <= $n; ++$i) 
{ 

    $insert = mysqli_query($con, $query); 

    if (!$insert) 
    { 
    $errors[] = mysqli_error($con); 
    } 

} 

if (empty($errors)) 
{ 
    echo 'Success'; 
} 

else 
{ 
    echo 'Errors:<br><br>' . implode('<br>', $errors); 
} 

另外請注意,我定你的電話到mysql_error()到正確的mysqli_error()函數。

+0

+1這是答案axactly OP想要 –