2012-03-08 28 views
0

私は最初のPHP/MySQLプロジェクトで作業しています。基本的なログインとINSERTクエリは機能していますが、更新はできません。これは私の最初の更新です。これは、状態と郵便番号を持つただ1つの行です。何か悪いですか?PHP SQL Updateクエリの構文

$dbc = mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

$state=$_POST['state']; 
$zip=$_POST['zip']; 

$custnum = 0; 
$sql="UPDATE $tbl_name SET state = '$state', zip = '$zip', WHERE custnum = '$custnum'"; 
$result = mysqli_query($dbc, $sql) 
or die('Error querying database.'); 
+1

あなたが前の最後のカンマは必要ありませんあなたは* 'mysql_'と動作しません' mysqli_'機能を、混合されている* "WHERE" 句 –

+1

。 –

+2

また、表示されるコードは[SQLインジェクション](http://php.net/manual/en/security.database.sql-injection.php)に脆弱です。あなたのライブラリの適切な衛生メソッド(この場合は 'mysql_real_escape_string()')を使用するか、PDOとプリペアドステートメントに切り替えます。 –

答えて

2

私はあなたがWHEREの直前にカンマを取り除く必要があると思います。

+0

ありがとう、これは働いた。 –

0
$dbc = mysql_connect($host, $username, $password)or die("cannot connect"); //don't need quotes 
    mysql_select_db($db_name,$dbc)or die("cannot select DB"); //added the $dbc (connection link) as a second parameter 

    $state=mysql_real_escape_string($_POST['state']); //Should make it safe! 
    $zip=mysql_real_escape_string($_POST['zip']); //Should make it safe! 

    $custnum = 0; 
    $sql="UPDATE $tbl_name SET state = '$state', zip = '$zip' WHERE custnum = '$custnum'"; 

//removed an extra comma 

    //Notice that $tbl_name isn't defined! 
    u 
    $result = mysql_query($sql) 
    or die('Error querying database.'); //from mysqli to mysql 
3

"WHERE" 句の前の最後のカンマを削除します。また、ちょうど始めるならば、文字列に二重引用符を使用するときには、変数名の前後にかっこを入れるのが良いでしょう。変数をよりよく区別するのに役立ちます。

Pekkaも彼のコメントで正しいです、あなたはmysqlとmysqliの機能を混ぜています。代わりにmysql_query()を使用してください。

0

は、SQL構文エラーのように見える:(ISSET($ _ POST [ '更新'])) { $名= $場合WHERE

+0

うわー、うまくいった、ありがとう。 –

0

前にコンマを削除する_ POST [ '名前']; // echo $ name;死ぬ; $ surname = $ _ POST ['姓'];

$upd="update table_name SET name='$name',surname='$surname' where id=$id"; 
mysql_query($upd); 

}

1
$suitno =mysqli_real_escape_string($ecms,$_POST['suitno']);//protecting sql injection 
$defendant=mysqli_real_escape_string($ecms,$_POST['defendant']);//protecting sql injection 
$casenature=mysqli_real_escape_string($ecms,$_POST['casenature']);//protecting sql injection 

$sql="UPDATE causelist SET suitno='{$suitno}', 
casenature='{$casenature}' WHERE suitno='{$suitno}'"; 
$result = mysqli_query($ecms, $sql) 
or die('Error querying database.'); 
+0

あなたの答えを詳述する必要があります – Massimo