Php 使用变量时,查询返回不同的(否)结果

Php 使用变量时,查询返回不同的(否)结果,php,mysql,Php,Mysql,我有两个select查询返回不同的结果,如下所示: 此查询返回29行: SELECT SQL_CALC_FOUND_ROWS `last`,`first`,`mate`,`address` FROM `homeownersnew` WHERE `last` LIKE "s%" AND `address` != "" LIMIT ' . (($pagination->get_page() - 1) * $records_per_page) . ', ' . $re

我有两个select查询返回不同的结果,如下所示:

此查询返回29行:

SELECT SQL_CALC_FOUND_ROWS `last`,`first`,`mate`,`address`
  FROM `homeownersnew` 
 WHERE `last` LIKE "s%" AND 
       `address` != "" 
 LIMIT ' . (($pagination->get_page() - 1) * $records_per_page) . ', ' . $records_per_page . '';
此查询使用变量尝试完成相同的结果,但返回0行:

@$last = "s%";

SELECT SQL_CALC_FOUND_ROWS `last`,`first`,`mate`,`address`
  FROM `homeownersnew` 
 WHERE `last` LIKE "$last" AND 
       `address` != "" 
 LIMIT ' . (($pagination->get_page() - 1) * $records_per_page) . ', ' . $records_per_page . '';
我肯定我忽略了一些东西,但却找不到问题所在

双引号字符串[在单引号字符串中找不到]最重要的特性是变量名将被展开。有关详细信息,请参见字符串解析

考虑这个显示问题的简单示例,主要是查询字面上像$last一样使用:


在这种情况下,正确的解决方案是。它解决了字符串插值问题,清理了代码,并防止SQL注入或意外数据破坏查询。

@Darren编辑问题时更改问题内容时要小心,因为它可能会赋予问题本身或潜在答案不同的含义。请确保包含使用的实际和语法有效的代码。@Prix抱歉,感谢您选择该代码!这里的早晨太早了:
$hello = "world";
echo "Hello $hello!"; // => Hello world!
echo 'Hello $hello!'; // => Hello $hello!