Im mainly a JavaScript guy and im building a library for a client and the library caches some data in MySQL per HTTP_REFERRER. If the data is different than it is on the server it updates the cache. I don't know what exactly I'm doing wrong but its saying there is a syntax error with this:
我主要是一个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); }
The error Im getting is:
我得到的错误是:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(cache) SET ('[{\"LatLng\":{\"Ba\":45.531124,\"Ca\":-122.68374699999998},\"InfoW' at line 1
您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'(缓存)SET('[{\“LatLng \”:{\“Ba \”:45.531124,\“Ca \”: - 122.68374699999998}附近使用正确的语法,“InfoW”在第1行
The data being sent looks like (before being stripped and slashes added, of course):
发送的数据看起来像(当然,在被剥离和斜杠之前):
[{"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 个解决方案
#1
1
You don't have the field you wish to set:
您没有要设置的字段:
UPDATE `cache-test` SET field_name = 'your huge val'
#2
0
Replace addslashes with:
将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));
#1
1
You don't have the field you wish to set:
您没有要设置的字段:
UPDATE `cache-test` SET field_name = 'your huge val'
#2
0
Replace addslashes with:
将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));