SQLSTATE[HY000]:一般错误:1366 整数值不正确:

Posted

技术标签:

【中文标题】SQLSTATE[HY000]:一般错误:1366 整数值不正确:【英文标题】:SQLSTATE[HY000]: General error: 1366 Incorrect integer value: 【发布时间】:2012-08-08 17:08:13 【问题描述】:
$order = new Application_Model_DbTable_Order();

$orderno = $order->select()
->from($order, 'orderno')
->where('memberid = ?', $userid)
->order('orderno DESC')
->limit(1, 0);

SQLSTATE[HY000]: 一般错误: 1366 不正确的整数值: 'SELECT ordertable.orderno FROM ordertable WHERE (memberid = '30') ORDER BY orderno DESC LIMIT 1' for column 'orderno ' 在第 1 行

收到此错误,我想知道我的代码是否有任何问题,因为我到处寻找原因,但似乎没有找到任何帮助。

#SQL code for Ordertable#
`orderno` int(5) NOT NULL AUTO_INCREMENT,
`memberid` int(5) DEFAULT NULL,
PRIMARY KEY (`orderno`)

#SQL code for Item#
`itemid` int(5) NOT NULL AUTO_INCREMENT,
`image` varchar(100) NOT NULL,
`itemname` varchar(30) DEFAULT NULL,
`description` varchar(100) DEFAULT NULL,
`itemtype` varchar(20) DEFAULT NULL,
PRIMARY KEY (`itemid`)

#SQL code for Orderdetail#
`orderdetailno` int(5) NOT NULL AUTO_INCREMENT,
`orderno` int(5) NOT NULL,
`itemid` int(5) NOT NULL,
`unitcost` decimal(6,2) DEFAULT NULL,
PRIMARY KEY (`orderdetailno`),
KEY `orderno` (`orderno`),
KEY `itemid` (`itemid`)

这是我的 sql 代码,如果它有助于我使用 mysql

$request = new Zend_Session_Namespace('cart');

$auth = Zend_Auth::getInstance();
$user = $auth->getIdentity();
$userid = $user->userid;

$order = new Application_Model_DbTable_Order();
$itemdb = new Application_Model_DbTable_Item();
$orderdetail = new Application_Model_DbTable_Orderdetail();

$data = array ('memberid' => $userid);
$order->insert($data);

$orderno = $order->select()
->from($order, 'orderno')
->where('memberid = ?', $userid)
->order('orderno DESC')
->limit(1, 0);


foreach ($request->array as $var)

$unitprice = $itemdb->select()
->from('$itemdb', 'unitcost')
->where('itemid = ?', $var);

$newArray = array('orderno' => $orderno,
'itemid' => $var,
'unitcost' => $unitprice, );

$orderdetail->insert($newArray);                    

非常感谢任何指导。

【问题讨论】:

我的表只有2行,即orderno: 1 memberid: 30,orderno: 2 memberid: 30。 你能发布更多相关代码吗?我认为您执行的查询错误。 【参考方案1】:

根据https://***.com/a/8882396/1432614,运行

SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;

如果包含STRICT_TRANS_TABLES,请将其从设置中删除。

例如:

SET @@GLOBAL.sql_mode= 'NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

【讨论】:

【参考方案2】:

您收到该错误的原因是您试图在您的INSERT 语句中使用Zend_Db_Select 对象作为值。

$orderno = $order->select()
                 ->from($order, 'orderno')
                 ->where('memberid = ?', $userid)
                 ->order('orderno DESC')
                 ->limit(1, 0);

然后在foreach循环内:

$newArray = array('orderno' => $orderno,  // <-- this becomes a SELECT statment
                  'itemid' => $var,
                  'unitcost' => $unitprice, );

$orderdetail->insert($newArray); // attempting to insert a select statement

如果你想在插入语句中使用它,你应该执行$orderno 语句和fetch() 结果:

$ordernum = $orderno->query()->fetch();

$newArray = array('orderno' => $ordernum,
                  'itemid' => $var,
                  'unitcost' => $unitprice, );

$orderDetail->insert($newArray);

【讨论】:

以上是关于SQLSTATE[HY000]:一般错误:1366 整数值不正确:的主要内容,如果未能解决你的问题,请参考以下文章

SQLSTATE[HY000]:一般错误:1364 字段

SQLSTATE [HY000]:一般错误:1364 字段“名称”没有默认值

SQLSTATE [HY000]:一般错误:1364 字段“标题”没有默认值

SQLSTATE [HY000]:一般错误:2053

PDO 错误:SQLSTATE [HY000]:一般错误:2031

SQLSTATE[HY000]:一般错误:在 Laravel 中迁移期间出现 1005