Php 如何像%%一样应用于变量?

Php 如何像%%一样应用于变量?,php,mysql,Php,Mysql,如何将LIKE应用于我的查询 $query_event ="SELECT * FROM event_list WHERE even_title='$EventTitle' AND even_loc='$EventLocation' "; 现在假设有一个表单需要在表单中放置title或put location,或者你可以同时放置这两个,那么查询是什么呢 请帮忙 谢谢您可以使用以下格式并始终使用mysql\u real\u escape\u字符串转义输入 $query_event ="SELECT

如何将LIKE应用于我的查询

$query_event ="SELECT * FROM event_list WHERE even_title='$EventTitle' AND even_loc='$EventLocation' ";
现在假设有一个表单需要在表单中放置title或put location,或者你可以同时放置这两个,那么查询是什么呢

请帮忙


谢谢

您可以使用以下格式并始终使用mysql\u real\u escape\u字符串转义输入

$query_event ="SELECT * FROM event_list 
              WHERE even_title LIKE '%".mysql_real_escape_string($EventTitle)."%' 
              AND  even_loc LIKE '%".mysql_real_escape_string($EventLocation)."%'";

您可以使用以下格式,并始终使用mysql\u real\u escape\u字符串转义输入

$query_event ="SELECT * FROM event_list 
              WHERE even_title LIKE '%".mysql_real_escape_string($EventTitle)."%' 
              AND  even_loc LIKE '%".mysql_real_escape_string($EventLocation)."%'";

你想要的是:

$query_event ="SELECT * FROM event_list WHERE even_title LIKE ('%".$EventTitle."%') AND even_loc LIKE ('%".$EventLocation."%')";

确保有一个类似于的教程

你想要的是:

$query_event ="SELECT * FROM event_list WHERE even_title LIKE ('%".$EventTitle."%') AND even_loc LIKE ('%".$EventLocation."%')";

确保也有类似于教程的

首先,您希望阻止SQL注入,但可以这样做:

$query_event = "SELECT * FROM event_list 
   WHERE even_title LIKE '%".mysql_real_escape_string($EventTitle)."%' 
   AND even_loc LIKE '%".mysql_real_escape_string($EventLocation)."%'";
但实际上,您最好使用PDO之类的工具:

$qry = 'SELECT * FROM event_list 
   WHERE even_title LIKE :title 
   AND even_loc LIKE :location';

$data = array( 'title' => '%'.$EventTitle.'%', 
               'location' => '%'.$EventLocation.'%' );

$sth = $pdo->prepare($qry);

$sth->execute($data);

首先,您希望阻止SQL注入,但可以这样做:

$query_event = "SELECT * FROM event_list 
   WHERE even_title LIKE '%".mysql_real_escape_string($EventTitle)."%' 
   AND even_loc LIKE '%".mysql_real_escape_string($EventLocation)."%'";
但实际上,您最好使用PDO之类的工具:

$qry = 'SELECT * FROM event_list 
   WHERE even_title LIKE :title 
   AND even_loc LIKE :location';

$data = array( 'title' => '%'.$EventTitle.'%', 
               'location' => '%'.$EventLocation.'%' );

$sth = $pdo->prepare($qry);

$sth->execute($data);

它看起来很简单。
{}
甚至不是必需的,但它增加了PHP的可读性,而不会影响SQL的有效性

$query_event ="SELECT * FROM event_list WHERE even_title LIKE '%{$EventTitle}%' AND even_loc LIKE '%{$EventLocation}%' ";

它看起来很简单。
{}
甚至不是必需的,但它增加了PHP的可读性,而不会影响SQL的有效性

$query_event ="SELECT * FROM event_list WHERE even_title LIKE '%{$EventTitle}%' AND even_loc LIKE '%{$EventLocation}%' ";

但请记住,这需要转义,以避免引号问题(SQL注入攻击等)。例如,如果$EventLocation是“Mick's Pub”会怎么样?现在SQL中的引号不匹配。(啊哈——感谢您添加了必要的转义函数!)但请记住,这需要转义,以避免引号出现问题(SQL注入攻击等)。例如,如果$EventLocation是“Mick's Pub”会怎么样?现在您的SQL中有不匹配的引号。(啊哈——谢谢你添加了必要的转义函数!)Misplaced$看起来像是它的fixed now+1(除非你打开了ANSI引号,在这种情况下MySQL不喜欢在第一个示例中用双引号而不是单引号分隔字符串。)@Matt,这对我来说一直都很好,不过我会切换这个示例。@John Cool,我只是想提一下。我对这个问题更为敏感,因为我也使用SQL Server和Oracle,而且只有单引号在所有情况下都适用。通常双引号用于引用对象名称,单引号用于引用实际字符串。@对于所有人来说,现在假设有一个表单需要在表单中放置标题或放置位置,或者u可以同时放置这两个元素,那么查询将是什么?Misplaced$,看起来它现在已修复+1(除非您启用了ANSI引号,否则在第一个示例中,MySQL不希望字符串用双引号而不是单引号分隔。)@马特,这对我来说一直都很好,不过我会换一个例子。@John Cool,我只是想提一下。我对这个问题更敏感,因为我也使用SQL Server和Oracle,而且只有单引号在所有情况下都适用。通常双引号用于引用对象名称,单引号用于实际l字符串。@对所有人来说,现在假设有一个表单需要在表单中放置标题或放置位置,或者你可以同时放置这两者,那么查询结果是什么?