【问题标题】:Can mssql_query detect inserting error?mssql_query 可以检测到插入错误吗?
【发布时间】:2011-07-11 07:03:05
【问题描述】:

我正在尝试检测插入结果。

当我尝试使用INSERT INTO table (1,2,'t') 插入时,这将导致插入错误,因为我的表的第三列是十进制类型,但 mssql_query 将返回 true。

但是当我使用 INSET INTO table (1,2,'t') 进行测试时,这将返回 false,就像它应该的那样。

为什么第一个语句返回 true?以及我们如何检查这是不是一个错误!

【问题讨论】:

  • 这是 sql-server 吗?还是 MySQL?如果是 MySQL,您可以使用mysql_error() 打印出从您的mysql_query() 返回的任何错误。
  • 第一条语句中是否真的插入了一行?
  • mssql_query 适用于 sqlserver :),顺便说一句,我真的很沮丧。这怎么能返回 true....WTH ps.no 记录被插入
  • 不确定这是否有帮助,但在执行 mssql_connect():mssql_min_error_severity(0); mssql_min_message_severity(10); 后尝试将这些行添加到您的 PHP 代码中
  • 定义你的意思,返回真。你的意思是它通过了语法检查?

标签: php sql-server sql-server-2008


【解决方案1】:

正确的语法是:

insert into table_name (column_name1, column_name2, ..) 
VALUES (value_of_column1, value_of_column2, ..)

您已经知道订购部件不是必需的,但我强烈建议您先订购,然后再为其赋值。

mysql_query 出错时返回 false,您可以使用 mysql_error 函数获取错误。

请记住,只有在填充类型为 varchar/char/date/datetime..的列时,才应该用引号将值括起来。

其他类型,如 boolean、int、decimal 和.. 应不带引号提供。

希望它能解决你的问题;)

【讨论】:

  • 我确实在我的代码中使用了一个完整的列分配,上面只是一个快速演示。这里的重点是 mssql_query() 没有将数据类型错误识别为插入失败
猜你喜欢
  • 2020-06-10
  • 2021-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多