Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

mysqli-- त्रुटि के साथ विफल बयान तैयार करें कोई तालिका का उपयोग नहीं किया गया है

जाहिर है,

SELECT * FROM (SELECT ? )

... मान्य MySQL सिंटैक्स के रूप में मान्यता प्राप्त नहीं है। एक टेबल नाम गुम है।

संपादित करें , आपकी टिप्पणियों के संबंध में:

सबसे पहले, कृपया ध्यान दें कि ? . को प्रतिस्थापित करके इस कथन को कंसोल में निष्पादित करना एक स्थिरांक के साथ आपकी स्थिति का अनुकरण नहीं करता है, इसलिए मैं तुलना के लिए परिणाम को अमान्य मानूंगा।

लेकिन फिर, इसे बिना निष्पादित करते हुए ? स्वाभाविक रूप से, एक त्रुटि देगा।

ऐसा इसलिए है क्योंकि केवल चयन को क्रियान्वित करना आपकी स्थिति के लिए अप्रासंगिक है। आपके PHP कोड में, यह निष्पादन नहीं है जो विफल हो जाता है बल्कि तैयारी . तो कंसोल का उपयोग करके इसका अनुकरण करने का उचित तरीका होगा PREPARE बयान।

तो एक

. कर रहे हैं
PREPARE myStmt 
  FROM 'SELECT * FROM (SELECT ? ) AS tmp WHERE NOT EXISTS (
    SELECT Identifier FROM eeg WHERE Identifier = ?
    ) LIMIT 1'

आपकी समस्या को अधिक सटीक रूप से पुन:पेश करेगा।

अब, ऐसा लगता है कि PREPARE पैरामीट्रिज्ड नेस्टेड प्रश्नों को समझने में कठिनाई होती है जो FROM . में दिखाई देते हैं खंड . इन उदाहरणों पर एक नज़र डालें:

PREPARE myStmt FROM "select * from (select ? from eeg) tmp"; 

(काम नहीं करता)

PREPARE myStmt FROM "select *,? from (select * from eeg) tmp"; 

(काम करता है)

PREPARE myStmt FROM "select *,? from (select 'asdf') tmp"; 

(काम करता है)

PREPARE myStmt FROM "select * from eeg where Identifier in (select ?)"; 

(काम करता है)

जिज्ञासु व्यवहार, लेकिन मैं केवल यह अनुमान लगा सकता हूं कि जब एक नेस्टेड SELECT FROM . में क्लॉज में पैरामीटर हैं, MySQL में स्टेटमेंट तैयार करने के लिए कोई सुराग नहीं है

मेरे सुझाव के लिए, अगर मैं समझता हूं कि आप क्या करने की कोशिश कर रहे हैं, तो आपको नेस्टेड चयन में पैरामीटर की आवश्यकता नहीं है। FROM के लिए आप इसे बाहर ले जा सकते हैं और नेस्टेड चयन में एक स्थिरांक हार्डकोड कर सकते हैं . निम्नलिखित कोड

if ($usertest = $datasqli->prepare("INSERT INTO eeg (Identifier) 
    SELECT ? from (select 1) tmp WHERE ? NOT IN
      (SELECT Identifier FROM eeg WHERE Identifier = ?)")) {

...चाल करना चाहिए।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में YYYYMM प्रारूप के साथ महीने के नाम और वर्ष के साथ कॉलम को पूर्णांक में बदलें

  2. MySQL:मुझे प्रत्येक उपयोगकर्ता प्रति दिन 1 से अधिकतम n पोस्ट दिखाने की आवश्यकता है

  3. कौन सा अधिक कुशल है:एकाधिक MySQL टेबल या एक बड़ी टेबल?

  4. PHP MySQLi multi_query तैयार कथन

  5. OUTFILE में चयन करें अनुमति अस्वीकार कर दी गई है लेकिन उपयोगकर्ता निर्देशिका को लिख सकता है