需要适当的PHP / MySQL语法帮助

时间:2012-06-06 04:14:15

标签: php mysql database syntax mysqli

我一直在我的代码中追逐一个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查询完成的旧网站的代码之后,在将变量附加到查询中时,%总是存在。

我在这里完全死了。你能提供的任何帮助都会如此疯狂地被人们所理解,因为它无法解释。

2 个答案:

答案 0 :(得分:0)

如果你想把变量放在一个字符串中,解释变量名称的结尾很困难,可以像这样使用{$var}

$eInfo = "SELECT * FROM tablename WHERE fieldname LIKE '{$variable}%'"; 

答案 1 :(得分:0)

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

  1. cow
  2. cows
  3. cow%(匹配)
  4. the cow
  5. 在Like查询中:WHERE var LIKE 'cow%'以下内容将匹配:

    1. cow(匹配)
    2. cows(匹配)
    3. cow%(匹配)
    4. the cow
    5. 请参阅MySQL Pattern Matching