Php 这个REGEXP响应一件事,但进入MySQL的是另一件事。为什么?
我有一个查询,当我用echo测试它时,它运行良好:Php 这个REGEXP响应一件事,但进入MySQL的是另一件事。为什么?,php,mysql,regex,Php,Mysql,Regex,我有一个查询,当我用echo测试它时,它运行良好: $url = "http://search.twitter.com/search.json?q=&ands=&phrase=&ors=¬s=RT%2C+%40&tag=andyasks&lang=all&from=amcafee&to=&ref=&near=&within=15&units=mi&since=&until=&am
$url = "http://search.twitter.com/search.json?q=&ands=&phrase=&ors=¬s=RT%2C+%40&tag=andyasks&lang=all&from=amcafee&to=&ref=&near=&within=15&units=mi&since=&until=&rpp=50";
$contents = file_get_contents($url);
$decode = json_decode($contents, true);
foreach($decode['results'] as $current) {
if(preg_match("/\?/", "$current[text]")){
echo $current[text]."<br />";
}
}
具体来说,它跳过的推特是amcafee:andyasks,企业2.0会议与会者本月晚些时候在波士顿时应该确保做什么?e2conf。这与第一个相同,但在DB插入中被忽略。有什么想法吗?PHP/MySQL调试技巧 在回显调试语句时,请确保查看HTML页面的源代码,以查看实际发送到mysql的内容 在查看echo’d页面的源代码时,将SQL查询直接复制并粘贴到mysql控制台或phpMyAdmin(如果正在使用)中,然后查看发生了什么 考虑使用日志函数,而不是回显mysql语句。这是一个你可以使用的脑死亡记录器 然后用类似于
tail -f /tmp/test.txt
在Unix命令行上。您可以下载,其工作原理应该类似。PHP/MySQL调试技巧 在回显调试语句时,请确保查看HTML页面的源代码,以查看实际发送到mysql的内容 在查看echo’d页面的源代码时,将SQL查询直接复制并粘贴到mysql控制台或phpMyAdmin(如果正在使用)中,然后查看发生了什么 考虑使用日志函数,而不是回显mysql语句。这是一个你可以使用的脑死亡记录器 然后用类似于
tail -f /tmp/test.txt
在Unix命令行上。您可以下载,其工作原理应该类似。字符串中有一个引号,它没有插入我的_emphasis\u添加: 阿姆卡菲:亚克斯,当企业2.0会议的与会者本月晚些时候在波士顿时,他们应该确保做什么?e2conf MySQL将裸单引号解释为第一个值的结尾,并将查询的其余部分变成胡言乱语。您需要转义单引号,即将它们转换为它们,以便MySQL知道单引号是字符串的一部分。顺便说一句,单引号技巧是SQL注入攻击的主要来源,因此您应该始终警惕单引号 如果您使用的是mysql扩展,则应始终在任何不受信任的数据上使用该函数:
$url = "http://search.twitter.com/search.jsonq=&ands=&phrase=&ors=¬s=RT%2C+%40&tag=andyasks&lang=all&from=amcafee&to=&ref=&near=&within=15&units=mi&since=&until=&rpp=50";
$contents = file_get_contents($url);
$decode = json_decode($contents, true);
foreach($decode['results'] as $current)
{
$query = "INSERT IGNORE INTO andyasks (questions, date, user) VALUES ('$current[text]','$current[created_at]','Andy')";
if(preg_match("/\?/", "$current[text]"))
{
mysql_real_escape_string($query);
mysql_query($query);
}
}
字符串中只有一个引号没有插入我的_emphasis u添加: 阿姆卡菲:亚克斯,当企业2.0会议的与会者本月晚些时候在波士顿时,他们应该确保做什么?e2conf MySQL将裸单引号解释为第一个值的结尾,并将查询的其余部分变成胡言乱语。您需要转义单引号,即将它们转换为它们,以便MySQL知道单引号是字符串的一部分。顺便说一句,单引号技巧是SQL注入攻击的主要来源,因此您应该始终警惕单引号 如果您使用的是mysql扩展,则应始终在任何不受信任的数据上使用该函数:
$url = "http://search.twitter.com/search.jsonq=&ands=&phrase=&ors=¬s=RT%2C+%40&tag=andyasks&lang=all&from=amcafee&to=&ref=&near=&within=15&units=mi&since=&until=&rpp=50";
$contents = file_get_contents($url);
$decode = json_decode($contents, true);
foreach($decode['results'] as $current)
{
$query = "INSERT IGNORE INTO andyasks (questions, date, user) VALUES ('$current[text]','$current[created_at]','Andy')";
if(preg_match("/\?/", "$current[text]"))
{
mysql_real_escape_string($query);
mysql_query($query);
}
}
在这种情况下,STRPO将更简单、更快。e、 例如,ifstrpos$当前[“文本”],“?”!=我想今天还有一个PHP函数需要学习。谢谢你的提示;我还没有使用90%的函数,所以我甚至不知道在引用中查找什么。谢谢。在这种情况下,strpos将更简单、更快。e、 例如,ifstrpos$当前[“文本”],“?”!=我想今天还有一个PHP函数需要学习。谢谢你的提示;我还没有使用90%的函数,所以我甚至不知道在引用中查找什么。谢谢。是复制/粘贴到MySQL帮助了我。我需要让它转义引号,因为它过早地截断了我的数据。你能详细介绍一下日志功能吗?我不知道该怎么用。谢谢你的提示。修正了上面的格式。基本上,您可以将sql字符串或任何内容传递到logger函数中,然后它将内容输出到一个文件中。然后,您可以监视文件而不是web浏览器,而不会因为查看解释为HTML的sql语句时可能出现的编码/转义问题而绊倒。好吧,正是复制/粘贴到MySQL中帮助了我。我需要让它转义引号,因为它过早地截断了我的数据。你能详细介绍一下日志功能吗?我不知道该怎么用。谢谢你的提示。修正了上面的格式。基本上,您可以将sql字符串或任何内容传递到logger函数中,然后它将内容输出到一个文件中。然后,您可以监视文件而不是web浏览器,而不会因为查看解释为HTML的sql语句时可能出现的编码/转义问题而出错。