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

मैं फैटफ्री फ्रेमवर्क में mysql परिणामसेट के माध्यम से कैसे लूप करूं?

DB क्वेरी करना

डीबी परिणामों के माध्यम से लूप करने के लिए 3 प्रकार हैं:

बिना मैपर के:

SQL क्वेरी निष्पादित करें और परिणाम सेट को साहचर्य सरणियों की एक सरणी के रूप में प्राप्त करें:

$users = $db->exec('SELECT * FROM users');
foreach($users as $user)
  echo $user['name'];//associative array

मैपर के साथ->लोड:

मैपर पंक्तियों को एक-एक करके प्राप्त करें (आपकी विधि):

$user=new \DB\SQL\Mapper($db,'users');
$user->load('');
while(!$user->dry()) {
  echo $user->name;//db mapper
  $user->next();
}

मैपर के साथ->ढूंढें:

परिणाम सेट को मैपर की एक सरणी के रूप में प्राप्त करें:

$mapper=new \DB\SQL\Mapper($db,'users');
$users=$mapper->find('');
foreach($users as $user)
  echo $user->name;//db mapper

DB त्रुटि प्रबंधन

\DB\SQL PDO का एक उपवर्ग है, इसलिए यह पकड़ने योग्य PDO अपवादों को फेंक सकता है। चूंकि ये डिफ़ॉल्ट रूप से अक्षम होते हैं, इसलिए आपको पहले इन्हें सक्षम करना होगा। यह 2 अलग-अलग तरीकों से किया जा सकता है:

  • तत्काल समय पर, सभी लेन-देन के लिए:

    $db = new \DB\SQL($dsn, $user, $pwd, array( \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION ));

  • बाद में कोड में, प्रति लेन-देन के आधार पर:

    $db->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);

एक बार पीडीओ अपवाद सक्षम हो जाने पर, बस उन्हें अन्य अपवादों के रूप में पकड़ें:

try {
  $db->exec('INSERT INTO mytable(id) VALUES(?)','duplicate_id');
} catch(\PDOException $e) {
  $err=$e->errorInfo;
  //$err[0] contains the error code (23000)
  //$err[2] contains the driver specific error message (PRIMARY KEY must be unique)
}

यह DB मैपर्स के साथ भी काम करता है, क्योंकि वे एक ही DB\SQL क्लास पर भरोसा करते हैं:

$db=new \DB\SQL($dsn,$user,$pwd,array(\PDO::ATTR_ERRMODE=>\PDO::ERRMODE_EXCEPTION));
$mytable=new \DB\SQL\Mapper($db,'mytable');
try {
  $mytable->id='duplicate_id';
  $mytable->save();//this will throw an exception
} catch(\PDOException $e) {
  $err=$e->errorInfo;
  echo $err[2];//PRIMARY KEY must be unique
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JDBC कैरेक्टर एन्कोडिंग

  2. PHP दिनांक ('W') बनाम MySQL YEARWEEK (अब ())

  3. MySQL उपयोगकर्ता DB में पासवर्ड कॉलम नहीं हैं - OSX पर MySQL इंस्टॉल करना

  4. MySQL दिनांक तुलना

  5. MySQL में एक स्ट्रिंग को "अनहेक्स" करने के 3 तरीके