我注意到一些奇怪的与mysql_real_escape_string
功能。它不逸出“
或”
,例如:“TEST”
不转化为\“TEST\”
。mysql_real_escape_string不逃避所有类型的”
的功能很好地工作"
(仔细观察,你会看到它们是不同的)
不知道如何解决这个问题,我不想从头开始写这个功能。它是否被弃用,是否有其他选择?
编辑:谢谢大家的回答。为了澄清我试图将这个字符串我喜欢的东西“目录\ r \ n插入到数据库中,并且由于某种原因它不起作用。对于任何其他字符串,一切正常,我没有收到任何错误消息,它只是没有出现在数据库中。所以我认为它可能与“”有关。
轻松对我的家伙!
EDIT2
$interestTable = "5431591 1 Things I Like” <br>";
//problem lies here
$count = 0;
$interestTable = preg_replace_callback('/<br>/', function($match) use($tagName, &$count) {
return $tagName[$count++][0] . ' ' . PHP_EOL;
}, $interestTable);
//$interestTable = "5431591 1 Things I Like” catalog \r\n" after format
$interestTable = mysql_real_escape_string($interestTable);
echo $interestTable;
mysql_query("INSERT INTO $tbl_name(userID,storyID,rank, storyType, interestTable)VALUES('$userID','$storyID','$rank','$storyType','$interestTable')", $dbh1);
EDIT3我没有记错的话,我从改变字符串东西我都喜欢”目录\ r \ n到事情我AA目录\ r \ n和有效。我不知道为什么会发生这种情况,也许在转换为字符串后,某些东西会与编码混淆,但我不确定。所有我肯定知道从字符串除去”后,一切工作正常
停止使用'mysql_'函数。 – Kermit 2013-04-23 15:15:16
此行为是设计使然;那些报价是无害的。 – SLaks 2013-04-23 15:15:47
[**请不要在新代码中使用'mysql_ *'函数**](http://bit.ly/phpmsql)。他们不再被维护[并且被正式弃用](http://j.mp/XqV7Lp)。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。如果你选择PDO,[这里是一个很好的教程](http://j.mp/PoWehJ)。 – ceejayoz 2013-04-23 15:15:50