2016-03-23 30 views
1

我想检查一个数据库中的成员id是否是一个整数,但是当我在这个数据上使用is_int函数时,它返回false。主键应该是一个int no?为什么在主键值返回字符串is_int?

$query = $sql->prepare("SELECT * FROM `blog` WHERE `categorie` = 'Dossier' ORDER BY `date_ajout` DESC LIMIT " . $offset . "," . $page_result . " "); 
$query->bindValue(':offset', $offset, PDO::PARAM_INT); 
$query->bindValue(':page_result', $page_result, PDO::PARAM_INT); 
$query->execute(); 
$data = $query->fetchAll(PDO::FETCH_ASSOC); 
foreach ($data as $key => $value) { 
$id = is_int($value['id']); 
    var_dump($id); 
    echo $id; 
} 
+1

你需要使用'is_numeric'吗? ***注意:** 要测试一个变量是一个数字还是一个数字字符串(比如表单输入,总是一个字符串),您必须使用'is_numeric()'。* –

+0

我试过的是数字工作,但主键类型是整数,所以这就是为什么我不明白。 – Trippy

+2

'var_dump($ value ['id']);'或'var_dump($ id);' –

回答

0

我找到了一个解决方案:

if ((is_int($value['id']) != true)) { 
    $id = intval($value['id']); 
} 

现在,它的确定

2

为了让PHP从MySQL正确表示数据类型,你需要有MySQL的本机驱动程序(mysqlnd)装。

链接:http://php.net/manual/en/book.mysqlnd.php

当你没有安装本地驱动程序有别,PHP必须猜测是什么类型。最安全的类型是string

函数可以确定一个字符串表示的东西实际上是一个数字是is_numeric

或者,您也可以使用intval($variable)(int)$variable将类型强制为整数。

+0

噢,我确实安装了'mysqlnd'。 –

相关问题