2013-10-08 51 views
1

请帮助我。 我insered为VARCHAR列PDO插入特定的数据类型

$nul='mystring'; 
$STH->bindParam(':param',$nul , PDO::PARAM_INT); 

如果PDO :: PARAM_INT意味着进入数据库插入数(INT)$ NUL = 0!有一个记录字符串'mystring'。这是为什么?

回答

3

PHP PDO::bindParam() data types.. how does it work?

PDO :: PARAM_INT只布尔转换为整数。没有其他的。

如果你想将字符串转换为int使用INTVAL

+3

或简单地施放它:'$ STH-> bindParam(':param',(int)$ nul,PDO :: PARAM_INT);' – h2ooooooo

+0

好的答案!谢谢 –

+0

真的,你也可以施放它。技术上讲,演员阵容更快。 –

2

假设我正确理解你的问题,你想要的数值为空(不确定的值),在数据库中,但在实践中你得到的字符串“NUL”。

如果要设置一些为null,它并不需要撇号。

// Setting the value of the string 
$string_to_insert = 'my_string'; 

// Checks that the string has a value, if not sets to NULL 
$value = isset($string_to_insert) ? $string_to_insert : null; 

// Bind the parameter 
$STH->bindParam(':param', $value, PDO::PARAM_INT); 

如果你在它周围放置了撇号,你会在你的数据库中接收到这个文字字符串。

NULL是一个常数,检查出的文档这里http://www.php.net/manual/en/language.types.null.php

+0

我很抱歉,我没有带来一个很好的例子。我想说任何字符串,不是null。非常感谢您对您的例子 –

+0

,以便它检查存在插入值我已经改变了,如果不是它设置为null。这是否回答这个问题? – Luke