2014-09-23 68 views
0

我有以下代碼:PDO和動態請求不起作用

$sth = $dbh->prepare('SELECT COUNT(*) as size FROM `users` WHERE uid = :uidVal'); 
$sth->bindValue(':uidVal', $_POST['uid'], PDO::PARAM_INT); 
// $_POST['uid'] == 2147483647 
$sth->execute(); 
$size = $sth->fetchAll(); 

print_r($size); 

的的print_r()的返回:

陣列([0] =>數組([尺寸] => 0 [0] => 0))

但是,這是我的數據的基礎上(MySQL的)

enter image description here

我不明白爲什麼我的COUNT(*)返回0,通常它應該返回3?

EDIT(基於評論)

這是select語句後,我的代碼:

$stmt = $dbh->prepare("INSERT INTO `users` (uid, uname) VALUES (?, ?)"); 
    $stmt->bindParam(1, $uid); 
    $stmt->bindParam(2, $name); 

    // insertion d'une ligne 
    $name = $_POST['uname']; 
    $uid = $_POST['uid']; 
    $stmt->execute(); 

爲什麼到我的數據庫中的UID值是2147483647,而在我的$的UID值_POST是10152434954117198

+0

@留在代碼中。 – Daan 2014-09-23 13:02:01

+1

仔細檢查'$ _POST ['uid']' – Mihai 2014-09-23 13:08:01

+0

@Debflav我在等待一個結果是的,計數(*) – R3tep 2014-09-23 13:10:45

回答

1

的UID值是大我的數據基本配置:

enter image description here

10152434954117198是一個漫長的不是整數

-1

試試看看這個代碼。

$sth = $dbh->prepare('SELECT COUNT(*) as size FROM `users` WHERE uid = ?'); 
$sth->bindValue(1, $_POST['uid']); 
// $_POST['uid'] == 2147483647 
$sth->execute(); 
$size = $sth->fetchAll(); 

print_r($size); 

或者你可以試試這個太

$sth = $dbh->prepare('SELECT COUNT(*) as size FROM `users` WHERE uid = :uidVal'); 
// $_POST['uid'] == 2147483647 
$sth->execute([ 
    "uidVal" => $_POST['uid'] 
]); 
$size = $sth->fetchAll(); 

print_r($size); 
+0

它也返回0:s – R3tep 2014-09-23 13:15:11