PDO行不存在?

时间:2014-02-28 23:10:25

标签: pdo

以下是我的代码:

<?php

$url = $_GET['url'];
$wordlist = array("Www.", "Http://", "Http://www.");
foreach ($wordlist as &$word) {
    $word = '/\b' . preg_quote($word, '/') . '\b/';
}
$url = preg_replace($wordlist, '', $url);
?>
<?php
$oDB = new PDO('mysql:dbname=mcnsaoia_onsafe;host=localhost;charset=utf8', 'mcnsaoia_xx', 'PASSWORD');
$hStmt=$oDB->prepare("SELECT * FROM users WHERE hjemmside = :hjemmside AND godkendt=ja");
$hStmt->execute(array('hjemmside' => $url));

if( $row = $hStmt->fetch() ){
    echo "EXIST";
}else{
    echo "NOT EXIST";
}


?>

我的问题是它说不存在,因为我知道应该在以下查询中找到一行:

SELECT * FROM users WHERE hjemmside = :hjemmside AND godkendt=ja

那为什么说不存在?我完全不知道:(

2 个答案:

答案 0 :(得分:0)

而不是

$hStmt=$oDB->prepare("SELECT * FROM users WHERE hjemmside = :hjemmside
  AND godkendt=ja");

$hStmt=$oDB->prepare("SELECT * FROM users WHERE hjemmside = :hjemmside
  AND godkendt='ja'");

左边很可能是一列而右边是一个字符串?我不会说你的语言,但这是我想到的第一件事。

答案 1 :(得分:-1)

您应该在查询中用引号括起非整数变量

AND godkendt='ja'

或者让pdo处理它

$hStmt=$oDB->prepare("SELECT * FROM users WHERE hjemmside = :hjemmside AND godkendt = :ja");
$hStmt->execute(array(':hjemmside' => $url, ':ja' => 'ja'));
                     //^ i added : for placeholder here, you missed it

我还想检查是否返回了行

if($hStmt->$eowVount() > 0){
    $row = $hStmt->fetch()
    echo "EXIST";
}else{
    echo "NOT EXIST";
}