2012-08-11 14 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]: सामान्य त्रुटि: 1366 गलत पूर्णांक मान:

क्योंकि मैं हर जगह काम के लिए खोज की है, अगर वहाँ कुछ भी मेरे कोड के साथ गलत है यह त्रुटि आई और सोच रहा हूं, लेकिन नहीं है किसी भी मदद के लिए।

#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 का उपयोग कर रहा हूं।

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

कोई मार्गदर्शन बहुत सराहना की जाएगी।

+0

मेरे तालिका केवल 2 पंक्तियां हैं, जो orderno है: 1 सदस्य: 30, और orderno: 2 सदस्य: 30. –

+0

क्या आप अधिक प्रासंगिक कोड पोस्ट कर सकते हैं? मुझे लगता है कि आप गलत सवाल निष्पादित कर रहे हैं। – drew010

+0

मेरा कोड संपादित किया है! –

उत्तर

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'; 
1

कारण आप उस त्रुटि हो रही है है, क्योंकि आप अपने 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); 
संबंधित मुद्दे