2017-07-03 191 views
0

我有一个问题或PDO数据绑定的误解,特别是bindValue()方法, 我已经搜索了很多,但我还没有找到我的答案呢。PDO数据类型不强制类型转换

这里的例子中,

global $connection; 

$name = 22; 

$stm = $connection->prepare("INSERT INTO users SET `name` = :name"); 

$stm->bindValue(":name", $name, PDO::PARAM_STR); 

if ($stm->execute()) { 
    echo 'Done'; 
} 

然后,执行完成时,值被存储在数据库中作为一个整数,而不是字符串和显示任何错误。

+1

什么类型的列是'name'?它表明它是一个字符串。一个字符串可以由任何字符组成。还有数字字符。在php中,很难区分1和“1” –

+0

它有效吗?如果是这样,问题是什么? – tadman

+1

如果'name'列的类型是一个整数,它只会被存储为一个整数,否则它将被存储一个字符串。 – Mikey

回答

0

我不这么认为,请首先尝试在您的浏览器FRST:

$name = '22'; 
echo $name; 
var_dump($name); 

当你看到他eventought 22 echoOut作为一个整数,但它的类型是一个字符串。 PHP在最近的版本中处理了这个,如果你试图给$ name变量添加一些数字,它会很好,Eventhought的变量是字符串!