2014-01-27 23 views
-1

我得到了「你的SQL語法錯誤;查看與你的MySQL服務器版本相對應的手冊,第1行「錯誤只在某些系統中運行文件。但有些系統運行文件並得到輸出。
值從複選框來
我的代碼是:
SQL語法錯誤; MySQL服務器版本在第1行''附近使用正確的語法

<?php 
session_start(); 
if(!isset($_SESSION['email'])) 
{ 
header("location:logout.php"); 
} 

require 'database.php'; 
if($_POST['delete']) // from button name="delete" 
{ 
$checkbox = $_POST['checkbox']; //from name="checkbox[]" 
$countCheck = count($_POST['checkbox']); 
$checked = $_POST["checkbox"]; 
for($i=0;$i<$countCheck;$i++) 
{ 
echo $del_id = $checkbox[$i]; 
$sql = "DELETE from user where id = $del_id"; 
$result = $mysqli->query($sql) or die(mysqli_error($mysqli)); 
} 
} 
?> 
+0

首先確認該複選框是否提供一個值與否。如果它不是,那麼你的查詢變得無效:'「從用戶刪除其中id =」' – younis

+1

@ Fred-ii-哦抱歉,我刪除了一條評論,沒有注意到,對不起 – dachi

+0

感謝您的回覆..我更新該代碼到我的文件。現在我解決了這個錯誤。但我的表單不提交檢查值但它在某個系統中工作,除了一個系統 – php

回答

0


「其中」子句值應以逗號插入,所以一旦嘗試使用下面的查詢:
$ sql =「DELETE from user where id ='」。$ del_id。「'」;.
希望。它可能會幫助你。

+0

我認爲你的意思是「引號」,而不是逗號。 –

+0

我也使用這個查詢,但我無法得到答案 – php

0

你應該這樣做:

所有的
for($i=0;$i<$countCheck;$i++) 
{ 
echo $del_id = $checkbox[$i]; 
if(isset($del_id) && $del_id !="") 
    $ids[] = $del_id; 
} 
$ids = explode(",", $ids); 

$sql = "DELETE from user where id IN ($ids)"; 
$result = $mysqli->query($sql) or die(mysqli_error($mysqli)); 
+0

爲什麼IN?任何具體原因? –

+0

而不是在循環中觸發查詢,您可以將其作爲替代方法。每次連接mysql服務器都耗費時間。該循環可能重複100次或更多次。 –

+0

是的,我知道!但相反,你應該告訴他他的SQL不好。順便說一句好的建議 –

相關問題