1

我整天都在追逐我的代码中的一个错误。这是它的长短:

我有一个通过查询字符串传递的变量,我想在我的 MySQLi 查询中使用该变量。像这样:

$variable;

$info = dbConnect('query');
$eInfo = "SELECT *
FROM tablename
WHERE fieldname = '$variable%'";
$eiData = $info->query($eInfo) or die(mysqli_error());
$eInfo = $eiData->fetch_assoc();

重点是变量名后面的 %。我不是 PHP 专家,但我记得不久前就学会了这个技巧,它对我所有的数据库驱动网站都有效,除了我正在开发的新网站。

上面的查询没有从表中返回任何数据。

但...

如果我省略 % 如下:

$variable;

$info = dbConnect('query');
$eInfo = "SELECT *
FROM tablename
WHERE fieldname = '$variable'";
$eiData = $info->query($eInfo) or die(mysqli_error());
$eInfo = $eiData->fetch_assoc();

查询执行,我得到我的数据。

为什么在使用语法'$variable%'编写要使用变量的查询后,这将不再起作用?只需删除 % ('$variable') 就可以正常工作,这让我完全困惑。

对于它的价值,我运行了一个专用服务器并且最近安装了 suPHP,如果这有任何帮助在这里有意义的远程机会(PHP 5.2.17 是我当前的版本)。

同样,我不是 PHP 高手,但是在检查了旧站点的代码后,我使用 MySQLi 查询完成了,当将变量附加到查询中时,% 总是在那里。

我完全死在了这里的水里。您可以提供的任何帮助都会非常感激,以至于无法解释。

4

2 回答 2

0

如果要将变量放在难以解释变量名结束位置的字符串中,请{$var}像这样使用:

$eInfo = "SELECT * FROM tablename WHERE fieldname LIKE '{$variable}%'"; 
于 2012-06-14T19:09:08.067 回答
0

%是查询的通配符LIKE。因此,如果您%在查询中使用WHERE var = 'cow%',它将在数据库中搜索文字字符串cow%

  1. cow
  2. cows
  3. cow%(匹配)
  4. the cow

在 Like 查询中:WHERE var LIKE 'cow%'以下将匹配:

  1. cow(匹配)
  2. cows(匹配)
  3. cow%(匹配)
  4. the cow

请参阅MySQL 模式匹配

于 2012-06-14T19:27:17.670 回答