0

PHPで更新関数を作成しようとしていますが、更新ごとにレコードが変更されていないようです。このファイルに渡される値を保持するJSONオブジェクトを作成しました。FirebugLiteコンソールによると、これらの値は正常に出力されるため、SQL側に問題がある可能性があります。誰かが問題を見つけることができますか?助けていただければ幸いです!

<?php

$var1 = $_REQUEST['action']; // We dont need action for this tutorial, but in a complex code you need a way to determine ajax action nature
$jsonObject = json_decode($_REQUEST['outputJSON']); // Decode JSON object into readable PHP object

$name = $jsonObject->{'name'}; // Get name from object
$desc = $jsonObject->{'desc'}; // Get desc from object
$did = $jsonObject->{'did'};// Get id object


mysql_connect("localhost","root","");  // Conect to mysql, first parameter is location, second is mysql username and a third one is a mysql password
@mysql_select_db("findadeal") or die( "Unable to select database"); // Connect to database called test


$query = "UPDATE deal SET dname = {'$name'}, desc={'$desc'} WHERE dealid = {'$did'}";
$add = mysql_query($query);
$num = mysql_num_rows($add);

if($num != 0) {

echo "true";

} else {

echo "false";

} 

?>
4

3 に答える 3

1

バッククォートのようにMySQLの予約語をエスケープする必要がありますdesc

UPDATE deal 
SET dname = {'$name'}, `desc`= {'$desc'} ....
                       ^----^--------------------------here
于 2013-02-19T18:06:37.000 に答える
1

mysql_affected_rows()更新後に使用する必要がありますmysql_num_rows

于 2013-02-19T18:08:33.953 に答える
1

中括弧を誤用していると思います。一重引用符はそれらの外側にある必要があります。:

"UPDATE deal SET dname = {'$name'}, desc={'$desc'} WHERE dealid = {'$did'}"

なる

"UPDATE deal SET dname = '{$name}', desc='{$desc}' WHERE dealid = '{$did}'"

余談ですが、mysql_* 関数を使用することは、セキュリティ的にあまり良くありません。php のmysqliまたはpdo拡張機能を調べることをお勧めします。

于 2013-02-19T18:09:14.480 に答える