2012-08-11 21 views
5
$order = new Application_Model_DbTable_Order(); 

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

SQLSTATE[HY000]: General error: 1366 Incorrect integer value: 'SELECT ordertable . orderno FROM ordertable WHERE (memberid = '30') ORDER BY orderno DESC LIMIT 1' for column 'orderno' at row 1SQLSTATE [HY000]: Allgemeiner Fehler: 1366 Falscher Integer-Wert:

diese Fehler bekommen und wunderte mich, wenn es etwas falsch mit meinem Code ist, weil ich für die Sache überall gesucht, aber nicht scheinen um Hilfe zu finden.

#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`) 

Dies ist mein SQL-Code, wenn es mir hilft, MySQL zu verwenden.

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

Jede Anleitung wird sehr geschätzt.

+0

Mein Tisch hat nur 2 Zeilen, das ist Bestellnummer: 1 Mitglied-ID: 30, und Bestellnummer: 2 Mitglied-ID: 30. –

+0

Können Sie mehr von dem relevanten Code buchen? Ich denke, Sie führen die Abfrage falsch aus. – drew010

+0

Habe meinen Code editiert! –

Antwort

11

Per https://stackoverflow.com/a/8882396/1432614, laufen

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

und wenn entweder STRICT_TRANS_TABLES sind, entfernen Sie sie von der Einstellung.

Zum Beispiel:

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

Der Grund, warum Sie diesen Fehler erhalten, weil Sie ein Zend_Db_Select Objekt als Wert in Ihrer INSERT Anweisung versuchen, zu verwenden.

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

Und dann in der foreach Schleife:

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

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

Sie sollten die $orderno Anweisung und fetch() das Ergebnis aus, wenn Sie es in einer INSERT-Anweisung verwenden möchten:

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

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

$orderDetail->insert($newArray); 
Verwandte Themen