2014-09-23 45 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