我不确定为什么这让我很难过。我有以下代码
$website = "http://www.google.com";
$name = "Person";
if(!empty($website) {
$name = "[url=$website]$name[/url]";
}
然后我尝试将其插入到mysql中。我尝试将mysql_real_escape_string添加到$ website和$ name(在if语句之后),认为“/ url”也可能导致问题。
$name = mysql_real_escape_string($name);
但仍然没有运气。有什么建议?我错过了什么?它给了我这个错误
“解析错误:语法错误,意外'/',期待T_STRING或T_VARIABLE或T_NUM_STRING”
答案 0 :(得分:5)
试
if(!empty($website)) {
$name = "[url={$website}]{$name}[/url]";
}
然后使用,
mysql_real_escape_string ($name);
答案 1 :(得分:1)
这是一个PHP语法问题。 解析器认为$ name [是数组引用的开头,你必须添加花括号来告诉解析器变量名称的开始和结束位置: “[URL = {$网站}] {$名称} [/ URL]”
答案 2 :(得分:0)
根本不会有任何问题。从数据库中读取时,您应该将stripslashes()
放在您的值周围
e.g。
$query = "SELECT field FROM table";
$row = mysql_fetch_array(mysql_query($query));
echo(stripslashes($row['field']));
您的输出将与您的输入相同。
答案 3 :(得分:0)
确保引用您发送到查询中的值,如下所示:
$sql = "INSERT INTO table (column) VALUES ('$value')";
$ value中的任何内容都会传递给查询。如果省略引号,即使使用mysql_real_escape_string()
,也可能会发生错误。在字符串内部,正斜杠在MySQL中没有任何特殊含义,因此mysql_real_escape_string()
使它们完好无损。这不是一个错误,而是记录在案的正确行为。基本上,您需要在查询中引用所有值。
但是,最好的解决方案是使用PDO及其参数化查询而不是mysql_XXX API。它有点复杂(虽然不多),它允许您通过关联数组将参数传递给查询,执行您需要的所有转义和引用。
答案 4 :(得分:0)
您是否在要插入的值周围加上引号?这将有效
INSERT INTO table_name (column_name)
VALUES ('[url=$website]http://www.google.com[/url]')
这将失败
INSERT INTO table_name (column_name)
VALUES ([url=$website]http://www.google.com[/url])
所以你可能有你的PHP
$query = "INSERT INTO table_name (column_name) VALUES ('$name')";
// DO MYSQL_QUERY