0

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

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

当我过去使用mysql_query函数时,它会生成关于无效列“foo”或类似列的错误,但使用 PDO,它不会在我期望的时候抛出异常。

通过这种方式,如果“years”是数字,我们希望确保“num_years”不更新为 0。如果是这种情况,PDO 是否有任何内置的东西会引发异常?

我正在使用 PDO 事务和准备好的语句。

4

2 回答 2

1

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

同样这样做,您可以仅在输入字段中特殊处理文本等事件,并将其设置为 0 或 -1 或 int 字段中的其他内容,您可以稍后捕获并在显示上验证以显示“未指定”或其他内容等价的。

希望这是有道理的

于 2013-03-15T16:18:23.617 回答
0

除了将字符串变量插入 PDO 之外,您还可以插入类似$delta = $year + 0. 如果它是“foo”,你得到$delta = 0并将其添加到num_years不会改变它们。

另一种方式当然是类型转换,所以使用(int)$year.

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

于 2013-03-15T16:24:06.777 回答