2011-03-03 52 views
4

我已经陷入了与报价混乱的混乱。带有类似查询的PHP报价

我尝试这样做,看起来像这样

$myQuery = 'SELECT col1 , col2 from my_table WHERE col_value LIKE '%$my_string_variable%'; 

一个类似的查询,但是该查询显然会给出一个错误。什么是正确的语法?我试图用双引号搞乱,但那也不管用。

+3

您是否尝试在查询周围添加闪烁标记?!?!?!?疯狂的人 – 2011-03-03 00:42:30

+0

@Byron闪烁的SQL查询...为什么我没有想到这一点? – alex 2011-03-03 00:44:17

+0

我现在这么分散,我不知道我做错了什么......把一个闪烁的标签放在一些东西......什么......我没有做对吗? :) – Genadinik 2011-03-03 00:44:28

回答

5

结合双引号和单引号。

$myQuery = "SELECT col1 , col2 
      FROM my_table 
      WHERE col_value LIKE '%$my_string_variable%'"; 

虽然我更愿意保护我不受SQL注入代码..

$myQuery = "SELECT col1 , col2 
      FROM my_table 
      WHERE col_value LIKE '%" . mysql_real_escape_string($my_string_variable) . "%'"; 
4

环绕在双引号整个事情。

$query = "SELECT col1 , col2 from my_table WHERE col_value LIKE '%$my_string_variable%'"; 
+0

将工作,直到该变量包含单引号.. – RichardTheKiwi 2011-03-03 00:55:26

+0

@理查德,没错。我会为此准备好查询。 – 2011-03-03 00:57:55

1

您在单引号分隔字符串中使用单引号。尝试使用双引号引用您的字符串。

1
$myQuery = "SELECT col1 , col2 from my_table WHERE col_value LIKE '%$my_string_variable%'"; 

应该解决你的问题。

1

您使用单引号作为字符串的开头,并再次使用单引号“inside”。您可以将其更改为以下内容:

$myQuery = "SELECT col1 , col2 from my_table WHERE col_value LIKE '%$my_string_variable%'"; 
0

如果您不想打破您的查询模式,那么该如何?

$myQuery = 'SELECT col1 , col2 from my_table WHERE col_value LIKE "%' .$my_string_variable . '%"'; 

当您应用单引号时,不要在其中包含php变量,因为此单引号将其中的所有内容视为值不可变。