使用JSON UPDATing记录时出现MySQL语法错误

时间:2011-05-29 21:10:20

标签: php javascript mysql json syntax-error

我主要是一个JavaScript人员,我正在为客户端构建一个库,并且该库根据HTTP_REFERRER在MySQL中缓存一些数据。如果数据与服务器上的数据不同,则更新缓存。我不知道我到底做错了什么,但它说这有一个语法错误:

if(mysql_query("UPDATE `cache-test` (cache) SET ('".addslashes(preg_replace('/\s\s+/', ' ', $referrer['cache']))."') WHERE url = '".$referrer['current']."'",$con)){ echo "saved"; }
else { echo mysql_error($con); }

我得到的错误是:

  

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'(缓存)SET('[{\“LatLng \”:{\“Ba \”:45.531124,\“Ca \”: - 122.68374699999998}附近使用正确的语法,“InfoW”在第1行

正在发送的数据看起来像(在被剥离和添加斜杠之前):

[{"LatLng":{"Ba":45.531124,"Ca":-122.68374699999998},"InfoWindow":"\n        <address>1125 NW 12th Ave, Portland, OR</address>\n        <p>My first apartment</p>\n      ","originalAddress":"1125 NW 12th Ave, Portland, OR"},{"LatLng":{"Ba":45.5144501,"Ca":-122.67644239999998},"InfoWindow":"\n        <address>1230 SW 2nd Ave, Portland, OR</address>\n        <p>My 2nd apartment</p>\n      ","originalAddress":"1230 SW 2nd Ave, Portland, OR"},{"LatLng":{"Ba":45.748955,"Ca":-122.47959000000003},"InfoWindow":"\n        <address>17501 NE 188th Ct, Brush Prairie, WA</address>\n        <p>The first place I lived by my own</p>\n      ","originalAddress":"17501 NE 188th Ct, Brush Prairie, WA"},{"LatLng":{"Ba":45.756944,"Ca":-122.43575800000002},"InfoWindow":"\n        <address>18607 NE Erickson Rd, Brush Prairie, WA</address>\n        <p>Last place I lived with my parents</p>\n      ","originalAddress":"18607 NE Erickson Rd, Brush Prairie, WA"}

2 个答案:

答案 0 :(得分:1)

您没有要设置的字段:

UPDATE `cache-test` SET field_name = 'your huge val'

答案 1 :(得分:0)

将addslashes替换为:

mysql_real_escape_string()

$cache = mysql_real_escape_string(preg_replace('/\s\s+/', ' ', $referrer['cache']));

mysql_query("UPDATE `cache-test`  
            SET (cache = '$cache') 
          WHERE url = '".$referrer['current']."'",$con));