PDO和MySQL类型切换

时间:2013-03-15 16:15:14

标签: php mysql pdo

我在表1中有一个字段'year',它被定义为VARCHAR(255),我需要在表2中更新'num_years',其值为'year'。 'num_years'被定义为INT。

当我尝试将'num_years'更新为'year'时如果'year'定义为3则可以正常工作,但如果我将'year'定义为'foo',它将使用0更新'num_years'。

当我以前使用mysql_query函数时,会产生关于无效列'foo'或类似函数的错误,但是对于PDO,它不会在我期待它时抛出异常。

通过这种方式,我们希望确保如果'years'是数字,'num_years'不会更新为0。如果是这种情况,PDO是否有内置的抛出异常?

我正在使用PDO交易和准备好的报表。

2 个答案:

答案 0 :(得分:1)

在你将它放入你的sql语句之前验证它是否是一个字符串,如果你从table1的年份包含类似“1年”的东西,你可以爆炸或以其他方式剥离字符和空格并返回1插入表2中的int列。

同样这样做你可以特别处理输入字段中的文本之类的事件,并将其设置为0或-1或int字段中的某些内容,您可以稍后在显示时捕获并验证“未指定” “或等同的东西。

希望有意义

答案 1 :(得分:0)

您可以插入类似$delta = $year + 0的内容,而不是将字符串变量插入PDO。如果是“foo”,则会获得$delta = 0并将其添加到num_years不会更改它们。

另一种方式当然是类型转换,因此请使用(int)$year

这应该在PHP中完成,而不是PDO。