2014-03-04 140 views
0

我想用mysql update更新一个表名的演示,但它不工作。 这里是我的PHP代码..PHP MySQL的更新查询不工作

PHP MYSQL编码:

$sql1 = 'UPDATE demo 
    SET name="$name", dob="$dob" 
    WHERE mid = "$id" AND email = "$email" '; 

    $result1=mysql_query($sql1); 
+1

我们展示您的变量定义的代码。你会得到什么错误?你做了什么调试? –

+0

添加完整脚本 –

+1

变量在单引号字符串内部没有展开,只有双引号字符串。 – Barmar

回答

2
$sql1 = 'UPDATE table_name 
    SET name="'. $name .'", dob="'. $dob '." 
    WHERE mid = "'. $id .'" AND email = "'. $email .'" '; 

你需要躲避”。如果你想有改变它周围,使“是外qouation标记和'是内它会工作

+0

换句话说,OP需要RTFM:http://php.net/manual/en/language.types.string.php –

+0

谢谢你的帮助,但仍然没有工作.. – Nemo

+0

仔细检查一切,中期的$ id必须存在(在同一行)电子邮件正是$电子邮件。也就是说,你可能会尝试将电子邮件字符串上的运算符从等号改为LIKE运算符,如果mid是唯一的话,电子邮件也不是秘密。如果字符集不匹配,则不相等。请参阅mehaase的答案在这里:http://stackoverflow.com/questions/12176824/sql-update-with-like 请注意,mysql_ *函数已弃用 –

1

变量只有双引号,不是单引号内扩大,使切换您的报价:。

$sql1 = "UPDATE demo 
SET name='$name', dob='$dob' 
WHERE mid = '$id' AND email = '$email' "; 
+0

我收到了更新通知,但没有对数据库进行任何更改...... – Nemo

+0

'mysql_error()'是否显示任何错误? – Barmar

+0

不!这就是为什么我提到不寻常的问题...... haha​​ha – Nemo

0

你所面临的最大的问题是,你用错了引号。当你只使用双的,它会正常工作。但是,当你设置好的单引号中的代码,它使用的所有变量作为字符串。我将搜索“$ id”而不是$ id代表的值。

正确的代码:

$sql1 = 'UPDATE table_name 
SET name= "'.$name.'", dob="'.$dob.'" 
WHERE mid = "'.$id.'" AND email = "'.$email.'" '; 

$result1=mysql_query($sql1);