2011-11-04 166 views
0

我有一些代碼更新了一個名爲job的表,但是一旦頁面被執行,它就不會更新表。下面是代碼:MySQL更新不起作用

$item = isset($_POST['item']); 
$ref = isset($_POST['ref']); 

$con = mysql_connect("$host","$username","$password"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("$db_name", $con); 

$sql="UPDATE job SET item = '$item' WHERE ref='$ref'"; 
if (!mysql_query($sql,$con)) 
    { 
    die('Error: ' . mysql_error()); 
    } 
header("location:index.php"); 

我也呼應了$ref變量,它的存在,但如果我把它在WHERE子句中,它不會工作。

+0

什麼是'$ sql'在你之前的價值執行查詢?另外,注意SQL注入(你可能希望在將它們放入查詢之前轉義'$ item'和'$ ref')。 –

+0

什麼類型的數據是$ ref變量? – James

+4

你意識到isset()返回一個布爾真/假,而不是參數的實際值? –

回答

3
$ref = isset($_POST['ref']); 

我也呼應了$ REF變量,它的存在

您還沒有分配的$_POST['ref']的實際值,你只分配它是否被設置。嘗試:

$ref = isset($_POST['ref']) ? mysql_real_escape_string($_POST['ref']) : NULL; 

您可以檢查您的查詢通過閱讀你所創建的SQL字符串:exit($sql)

參見:What is SQL injection?

1
$item = isset($_POST['item']); 
$ref = isset($_POST['ref']); 

這個兩個語句,變量將有0或1作爲值...更好地寫這種方式..

$item = (isset($_POST['item']) == 1 ? $_POST['item'] : ''); 
$ref = (isset($_POST['ref']) == 1 ? $_POST['ref'] : ''); 

if($item !='' && $ref !=''){ 
    // your update query 
}