5
$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. ordernoFROM ordertableWHERE (memberid = '30') ORDER BY ordernoDESC LIMIT 1' 列 '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`)

MySQLを使用しているのに役立つ場合、これは私のSQLコードです。

$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);                    
}

任意のガイダンスは非常に高く評価されます。

4

2 に答える 2

11

https://stackoverflow.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';
于 2012-08-12T02:28:52.313 に答える
1

このエラーが発生する理由は、ステートメントZend_Db_Selectでオブジェクトを値として使用しようとしているためです。INSERT

$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

insert ステートメントで使用する場合は、$ordernoステートメントと結果を実行する必要があります。fetch()

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

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

$orderDetail->insert($newArray);
于 2012-08-12T06:14:47.507 に答える