2011-11-04 103 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 
}