Php PDO mysql给出的结果与mysql workbentch不同

Php PDO mysql给出的结果与mysql workbentch不同,php,mysql,pdo,Php,Mysql,Pdo,我从mysql切换到pdo。我有以下代码: $stmt_serverl = $db->prepare("SELECT ID, Name, IP, IP2 FROM serverl WHERE LOWER(Name) LIKE '%:name%'"); if ($row['divs'] == 1) { $date_compare = new DateTime('2014-10-15 11:11:10'); if ($dt > $date_compare) {

我从mysql切换到pdo。我有以下代码:

$stmt_serverl = $db->prepare("SELECT ID, Name, IP, IP2 FROM serverl WHERE LOWER(Name) LIKE '%:name%'");

if ($row['divs'] == 1) {
    $date_compare = new DateTime('2014-10-15 11:11:10');
    if ($dt > $date_compare) {
        $name = explode('@',strtolower($row['name']));
        print_r($name);
        $full_name = $name[0]."-".$name[1].$name[2];
        $stmt_serverl->bindValue(':name', $name[1], PDO::PARAM_STR);
        }
    else {
        $name = explode('@',strtolower($row['name']));
        print_r($name);
        $full_name = $name[0]."-".$name[1]."-".$name[2];
        $stmt_serverl->bindValue(':name', $name[1], PDO::PARAM_STR);
        }
    }
elseif ($row['divs'] == 2) {
    $name = explode('@',strtolower($row['name']));
    print_r($name);
    $full_name = $name[0].$name[1]."-".$name[2];
    $stmt_serverl->bindValue(':name', $name[0], PDO::PARAM_STR);
    }
$dt = null;

$stmt_serverl->execute();
$result = null;
$result = $stmt_serverl->fetchAll();

// println($query_serverl, $debug, $logfile);
echo "<pre>";
print_r($result);
echo "</pre>";
) 在工作台中运行同一查询时,返回0个结果(完全不匹配) 我想不出有什么问题。 谢谢
mor

不要引用占位符,数据库将收到
%:name%
作为值

将SQL更改为:

$stmt_serverl->bindValue(':name', '%'.$name[1].'%', PDO::PARAM_STR);
然后调整装订:

SELECT ID, Name, IP, IP2 FROM serverl WHERE LOWER(Name) LIKE CONCAT ('%', :name , '%')
或者您可以在SQL本身中执行以下操作:

$stmt_serverl->bindValue(':name', $name[1], PDO::PARAM_STR);
然后以与当前绑定相同的方式进行绑定:


你的if/else/elseif什么都不做。好吧,我想你是对的,但我不明白我是如何从elseif中获得print_4($name)的输出的……谢谢,它现在正在工作。我将if改为
$row['divs']=“2”
,并修复了前面提到的SQL查询。
SELECT ID, Name, IP, IP2 FROM serverl WHERE LOWER(Name) LIKE CONCAT ('%', :name , '%')
$stmt_serverl->bindValue(':name', $name[1], PDO::PARAM_STR);