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

MySQL जहां php और pdo बाइंड का उपयोग करके कई क्षेत्रों के साथ काम नहीं कर रहा है

समस्या शायद यह है कि $this->phone जब आप क्वेरी चलाते हैं तो खाली होता है।

उस स्थिति में, क्वेरी होगी SELECT * FROM [...] OR WHERE phone LIKE '%%' जो हमेशा सब कुछ लौटाएगा।

समाधान:यदि प्रदान नहीं किया गया है तो फ़ोन मानदंड छोड़ दें या (हैक अलर्ट! ) उस मान का उपयोग करें जो उस कॉलम में कभी नहीं होगा।

ऐसा करने का दूसरा तरीका क्वेरी को कुछ इस तरह बदलना है

SELECT *
  FROM directory
 WHERE name LIKE :name 
   AND :name_provided = 1
    OR phone LIKE :phone
   AND :phone_provided = 1

और फिर :phone_provided . को बाइंड करें से 1 अगर $this->phone परिभाषित किया गया है, 0 अन्यथा। इसी तरह :name_provided . के साथ ।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLAlchemy ORM के साथ बल्क इंसर्ट

  2. php mysql क्रमबद्ध परिणाम प्राप्त किए गए आदेश के अनुसार

  3. क्या होगा यदि 2 या अधिक लोग एक ही समय में एक ही MySQL तालिका को अपडेट करने का प्रयास करते हैं?

  4. BadStore पर SQL इंजेक्शन

  5. Mysql के WHERE क्लॉज में फ़ाइल का नाम कुछ भी नहीं देता है