Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 这个REGEXP响应一件事,但进入MySQL的是另一件事。为什么?_Php_Mysql_Regex - Fatal编程技术网

Php 这个REGEXP响应一件事,但进入MySQL的是另一件事。为什么?

Php 这个REGEXP响应一件事,但进入MySQL的是另一件事。为什么?,php,mysql,regex,Php,Mysql,Regex,我有一个查询,当我用echo测试它时,它运行良好: $url = "http://search.twitter.com/search.json?q=&ands=&phrase=&ors=&nots=RT%2C+%40&tag=andyasks&lang=all&from=amcafee&to=&ref=&near=&within=15&units=mi&since=&until=&am

我有一个查询,当我用echo测试它时,它运行良好:

$url = "http://search.twitter.com/search.json?q=&ands=&phrase=&ors=&nots=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=&nots=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=&nots=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语句时可能出现的编码/转义问题而出错。