通过mysql发送斜杠

时间:2010-12-14 12:37:53

标签: php mysql escaping

我不确定为什么这让我很难过。我有以下代码

$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”

5 个答案:

答案 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