<span> 1</span> <?<span>php </span><span> 2</span> <span>$dbh</span> = <span>new</span> PDO('mysql:host=localhost;dbname=access_control', 'root', ''<span>); </span><span> 3</span> <span>$dbh</span>->setAttribute(PDO::ATTR_ERRMODE, PDO::<span>ERRMODE_EXCEPTION); </span><span> 4</span> <span>$dbh</span>-><span>exec</span>('set names utf8'<span>); </span><span> 5</span> <span>/*</span><span>添加</span><span>*/</span> <span> 6</span> <span>//</span><span>$sql = "INSERT INTO `user` SET `login`=:login AND `password`=:password"; </span> <span> 7</span> <span>$sql</span> = "INSERT INTO `user` (`login` ,`password`)VALUES (:login, :password)"; <span>$stmt</span> = <span>$dbh</span>->prepare(<span>$sql</span>); <span>$stmt</span>->execute(<span>array</span>(':login'=>'kevin2',':password'=>''<span>)); </span><span> 8</span> <span>echo</span> <span>$dbh</span>-><span>lastinsertid(); </span><span> 9</span> <span>/*</span><span>修改</span><span>*/</span> <span>10</span> <span>$sql</span> = "UPDATE `user` SET `password`=:password WHERE `user_id`=:userId"<span>; </span><span>11</span> <span>$stmt</span> = <span>$dbh</span>->prepare(<span>$sql</span><span>); </span><span>12</span> <span>$stmt</span>->execute(<span>array</span>(':userId'=>'7', ':password'=>'4607e782c4d86fd5364d7e4508bb10d9'<span>)); </span><span>13</span> <span>echo</span> <span>$stmt</span>-><span>rowCount(); </span><span>14</span> <span>/*</span><span>删除</span><span>*/</span> <span>15</span> <span>$sql</span> = "DELETE FROM `user` WHERE `login` LIKE 'kevin_'"; <span>//</span><span>kevin% </span> <span>16</span> <span>$stmt</span> = <span>$dbh</span>->prepare(<span>$sql</span><span>); </span><span>17</span> <span>$stmt</span>-><span>execute(); </span><span>18</span> <span>echo</span> <span>$stmt</span>-><span>rowCount(); </span><span>19</span> <span>/*</span><span>查询</span><span>*/</span> <span>20</span> <span>$login</span> = 'kevin%'<span>; </span><span>21</span> <span>$sql</span> = "SELECT * FROM `user` WHERE `login` LIKE :login"<span>; </span><span>22</span> <span>$stmt</span> = <span>$dbh</span>->prepare(<span>$sql</span><span>); </span><span>23</span> <span>$stmt</span>->execute(<span>array</span>(':login'=><span>$login</span><span>)); </span><span>24</span> <span>while</span>(<span>$row</span> = <span>$stmt</span>->fetch(PDO::<span>FETCH_ASSOC)){ </span><span>25</span> <span>print_r</span>(<span>$row</span><span>); </span><span>26</span> <span>} </span><span>27</span> <span>print_r</span>( <span>$stmt</span>->fetchAll(PDO::<span>FETCH_ASSOC)); </span><span>28</span> ?>
1 Verbindung herstellen
<span>1</span> <?<span>php </span><span>2</span> <span>$dbh</span>=newPDO('mysql:host=localhost;port=3306; dbname=test',<span>$user</span>,<span>$pass</span>,<span>array</span><span>( </span><span>3</span> PDO::ATTR_PERSISTENT=><span>true</span> <span>4</span> <span>)); </span><span>5</span> ?>
Persistenzlink PDO::ATTR_PERSISTENT=>true
2. Fehler erkennen
<span> 1</span> <?<span>php </span><span> 2</span> <span>try</span><span>{ </span><span> 3</span> <span>$dbh</span>=newPDO('mysql:host=localhost;dbname=test',<span>$user</span>,<span>$pass</span><span>); </span><span> 4</span> <span> 5</span> <span>$dbh</span>->setAttribute(PDO::ATTR_ERRMODE,PDO::<span>ERRMODE_EXCEPTION); </span><span> 6</span> <span> 7</span> <span>$dbh</span>-><span>exec</span>("SET CHARACTER SET utf8"<span>); </span><span> 8</span> <span>$dbh</span>=<span>null</span>; <span>//</span><span>断开连接</span> <span> 9</span> }<span>catch</span>(PDOException<span>$e</span><span>){ </span><span>10</span> <span>print</span>"Error!:".<span>$e</span>->getMessage()."<br/>"<span>; </span><span>11</span> <span>die</span><span>(); </span><span>12</span> <span>} </span><span>13</span> ?>
3. Geschäft
<span> 1</span> <?<span>php </span><span> 2</span> <span>try</span><span>{ </span><span> 3</span> <span>$dbh</span>->setAttribute(PDO::ATTR_ERRMODE,PDO::<span>ERRMODE_EXCEPTION); </span><span> 4</span> <span> 5</span> <span>$dbh</span>->beginTransaction();<span>//</span><span>开启事务</span> <span> 6</span> <span>$dbh</span>-><span>exec</span>("insertintostaff(id,first,last)values(23,'Joe','Bloggs')"<span>); </span><span> 7</span> <span>$dbh</span>-><span>exec</span>("<span>insertintosalarychange(id,amount,changedate) </span><span> 8</span> values(23,50000,NOW())"<span>); </span><span> 9</span> <span>$dbh</span>->commit();<span>//</span><span>提交事务</span> <span>10</span> <span>11</span> }<span>catch</span>(<span>Exception</span><span>$e</span><span>){ </span><span>12</span> <span>$dbh</span>->rollBack();<span>//</span><span>错误回滚</span> <span>13</span> <span>echo</span>"Failed:".<span>$e</span>-><span>getMessage(); </span><span>14</span> <span>} </span><span>15</span> ?>
4. Fehlerbehandlung
a. Stiller Modus (Standardmodus)
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_SILENT); //Fehler nicht anzeigen
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);//Warnfehler anzeigen und Ausführung fortsetzen
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);//Ein schwerwiegender Fehler tritt auf, PDOException
<span> 1</span> <?<span>php </span><span> 2</span> <span>try</span><span>{ </span><span> 3</span> <span>$dbh</span> = <span>new</span> PDO(<span>$dsn</span>, <span>$user</span>, <span>$password</span><span>); </span><span> 4</span> <span>$sql</span> = 'Select * from city where CountryCode =:country'<span>; </span><span> 5</span> <span>$dbh</span>->setAttribute(PDO::ATTR_ERRMODE, PDO::<span>ERRMODE_WARNING); </span><span> 6</span> <span>$stmt</span> = <span>$dbh</span>->prepare(<span>$sql</span><span>); </span><span> 7</span> <span>$stmt</span>->bindParam(':country', <span>$country</span>, PDO::<span>PARAM_STR); </span><span> 8</span> <span>$stmt</span>-><span>execute(); </span><span> 9</span> <span>while</span> (<span>$row</span> = <span>$stmt</span>->fetch(PDO::<span>FETCH_ASSOC)) { </span><span>10</span> <span>print</span> <span>$row</span>['Name'] . "/t"<span>; </span><span>11</span> <span> } </span><span>12</span> } <span>//</span><span> if there is a problem we can handle it here </span> <span>13</span> <span>catch</span> (PDOException <span>$e</span><span>) { </span><span>14</span> <span>echo</span> 'PDO Exception Caught. '<span>; </span><span>15</span> <span>echo</span> 'Error with the database: <br />'<span>; </span><span>16</span> <span>echo</span> 'SQL Query: ', <span>$sql</span><span>; </span><span>17</span> <span>echo</span> 'Error: ' . <span>$e</span>-><span>getMessage(); </span><span>18</span> <span>} </span><span>19</span> ?>
1. Verwenden Sie query()
<?<span>php </span><span>$dbh</span>->query(<span>$sql</span>); 当<span>$sql</span> 中变量可以用<span>$dbh</span>->quote(<span>$params</span>); <span>//</span><span>转义字符串的数据</span> <span>$sql</span> = 'Select * from city where CountryCode ='.<span>$dbh</span>->quote(<span>$country</span><span>); </span><span>foreach</span> (<span>$dbh</span>->query(<span>$sql</span>) <span>as</span> <span>$row</span><span>) { </span><span>print</span> <span>$row</span>['Name'] . "/t"<span>; </span><span>print</span> <span>$row</span>['CountryCode'] . "/t"<span>; </span><span>print</span> <span>$row</span>['Population'] . "/n"<span>; } </span>?>
2. Verwenden Sie „prepare“, „bindParam“ und „execute“ [empfohlen, Sie können auch hinzufügen, ändern, löschen]
<?<span>php </span><span>$dbh</span>->prepare(<span>$sql</span><span>); 产生了个PDOStatement对象 PDOStatement</span>-><span>bindParam() PDOStatement</span>->execute();<span>//</span><span>可以在这里放绑定的相应变量</span> ?>
3. Dinge
<?<span>php </span><span>try</span><span> { </span><span>$dbh</span> = <span>new</span> PDO('mysql:host=localhost;dbname=test', 'root', ''<span>); </span><span>$dbh</span>->query('set names utf8;'<span>); </span><span>$dbh</span>->setAttribute(PDO::ATTR_ERRMODE, PDO::<span>ERRMODE_EXCEPTION); </span><span>$dbh</span>-><span>beginTransaction(); </span><span>$dbh</span>-><span>exec</span>("Insert INTO `test`.`table` (`name` ,`age`)VALUES ('mick', 22);"<span>); </span><span>$dbh</span>-><span>exec</span>("Insert INTO `test`.`table` (`name` ,`age`)VALUES ('lily', 29);"<span>); </span><span>$dbh</span>-><span>exec</span>("Insert INTO `test`.`table` (`name` ,`age`)VALUES ('susan', 21);"<span>); </span><span>$dbh</span>-><span>commit(); } </span><span>catch</span> (<span>Exception</span> <span>$e</span><span>) { </span><span>$dbh</span>-><span>rollBack(); </span><span>echo</span> "Failed: " . <span>$e</span>-><span>getMessage(); } </span>?>
Häufig verwendete Methoden von PDO:
PDO::query() wird hauptsächlich für Operationen (PDOStatement) mit aufgezeichneten zurückgegebenen Ergebnissen verwendet, insbesondere für Auswahloperationen.
PDO::exec() ist hauptsächlich für Operationen gedacht, die keine Ergebnismenge zurückgeben. Wie Einfüge-, Aktualisierungs- und andere Vorgänge. Gibt die Anzahl der betroffenen Zeilen zurück.
PDO::lastInsertId() gibt die letzte ID des letzten Einfügevorgangs zurück, aber bitte beachten Sie: Wenn Sie in tb(col1,col2) Werte(v1,v2),(v11,v22) einfügen. Für mehrere Datensätze , lastinsertid() gibt nur die ID zurück, als der erste Datensatz (v1, v2) eingefügt wurde, nicht die Datensatz-ID des zuletzt eingefügten Datensatzes.
PDOStatement::fetch() wird verwendet, um einen Datensatz abzurufen. Verwenden Sie while zum Durchqueren.
PDOStatement::fetchAll() ruft alle Datensätze in einem ab.
PDOStatement::fetchcolumn([int columns_indexnum]) wird verwendet, um direkt auf die Spalte zuzugreifen. Der Parameter columns_indexnum ist der Indexwert der Spalte in der Zeile, beginnend bei 0. Diese Methode kann jedoch nur eine Spalte derselben abrufen Zeile für Zeile und muss nur einmal ausgeführt werden, springen Sie zur nächsten Zeile. Daher ist die Verwendung beim direkten Zugriff auf eine bestimmte Spalte einfacher, beim Durchlaufen mehrerer Spalten jedoch nicht sinnvoll.
PDOStatement::rowcount() eignet sich zum Ermitteln der Anzahl von Datensätzen bei Verwendung der Methode query("select..."). Kann auch in der Vorverarbeitung verwendet werden. $stmt->rowcount();
PDOStatement::columncount() eignet sich zum Ermitteln der Anzahl der Spalten in einem Datensatz, wenn die Methode query("select...") verwendet wird.
Hinweise:
1. Wählen Sie Fetch oder Fetchall?
Wenn der Datensatz klein ist, ist die Verwendung von fetchall effizienter und reduziert die Anzahl der Abrufvorgänge aus der Datenbank. Bei großen Ergebnismengen führt die Verwendung von fetchall jedoch zu einer großen Belastung des Systems. Die Datenmenge, die die Datenbank an das WEB-Frontend übertragen muss, ist zu groß und ineffizient.
2. fetch() oder fetchall() hat mehrere Parameter:
mixed pdostatement::fetch([int fetch_style [,int Cursor_orientation [,int Cursor_Offset]]])
Array pdostatement::fetchAll( int fetch_style)
fetch_style-Parameter:
■$row=$rs->fetchAll(PDO::FETCH_BOTH); ist die Standardeinstellung, kann weggelassen werden und gibt die Zuordnung und den Index zurück.
■$row=$rs->fetchAll(PDO::FETCH_ASSOC); Der Parameter FETCH_ASSOC legt fest, dass nur assoziative Arrays zurückgegeben werden.
■$row=$rs->fetchAll(PDO::FETCH_NUM); Gibt das Indexarray zurück
■$row=$rs->fetchAll(PDO::FETCH_OBJ); object gibt, wenn es fetchall() ist, ein zweidimensionales Array zurück, das aus Objekten
Das Obige stellt die Verwendung von PHP-MySQL-PDO vor, einschließlich einiger Aspekte des Inhalts. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.