Php PDO mysql给出的结果与mysql workbentch不同
我从mysql切换到pdo。我有以下代码: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) {
$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);