我一直在我的代码中追逐一个bug。这是它的长短:
我有一个通过查询字符串传递的变量,我想在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查询完成的旧网站的代码之后,在将变量附加到查询中时,%总是存在。
我在这里完全死了。你能提供的任何帮助都会如此疯狂地被人们所理解,因为它无法解释。
答案 0 :(得分:0)
如果你想把变量放在一个字符串中,解释变量名称的结尾很困难,可以像这样使用{$var}
:
$eInfo = "SELECT * FROM tablename WHERE fieldname LIKE '{$variable}%'";
答案 1 :(得分:0)
%
是LIKE
个查询的通配符。因此,如果您在%
的查询中使用WHERE var = 'cow%'
,则会在数据库中搜索文字字符串cow%
。
cow
cows
cow%
(匹配)the cow
在Like查询中:WHERE var LIKE 'cow%'
以下内容将匹配:
cow
(匹配)cows
(匹配)cow%
(匹配)the cow