前回の記事では「PHPデータベース学習:PDOを使ってデータベースに接続するには?」をお届けしました。 」では、PHP で PDO を介してデータベースに接続する方法が詳しく説明されています。この記事では、引き続き PDO を使用して PHP で SQL ステートメントを実行する方法を見ていきます。みんなが助けてくれるといいですね!
前回の記事では、PHP が PDO を介してデータベースに接続する方法を学習しました。データベースに接続するには、SQL ステートメントを実行する必要があります。 PDO では、SQL ステートメントを実行する 3 つの方法、つまり exec()
メソッド、query()
メソッド、プリペアド ステートメント prepare()
および # を使用できます。 ##execute() メソッド。それでは、一緒に見てみましょう。
<strong>exec() <span style="font-size: 20px;"></span></strong>
メソッド
exec() メソッドを使用できます。このメソッドを使用して実行が成功すると、返された結果が影響を受けます。
PDO::exec(string $sql)注意してください:
$ sql は、実行される SQL ステートメントです。
exec() このメソッドは、SELECT クエリ ステートメントから対応する結果を取得しません。
<?php $dsn = 'mysql:host=127.0.0.1;dbname=test'; $user = 'root'; $pwd = 'root'; try{ $pdo = new PDO($dsn,$user,$pwd); $sql = "insert into user(name,age,sex) values('壹壹','21','男')"; $res = $pdo -> exec($sql); if($res) echo '成功添加 '.$res.' 条数据!'; }catch(PDOException $e){ echo '数据库连接失败:'.$e -> getMessage(); } ?>出力結果:
query() メソッドを見てみましょう。
<strong>query() <span style="font-size: 20px;"></span></strong>
メソッド
exec() メソッドは、結果セットを返す必要のないこれらのステートメント情報を返すことができます。結果セットを返す必要がある SELECT クエリ ステートメントを実行する場合は、query() ステートメントを渡す必要があります。このメソッドが正常に実行されると、悔い改めた本国は
PDOStatement オブジェクトになります。
rowCount() メソッドを使用して取得できます。 。
PDO::query(string $sql) PDO::query(string $sql, int $PDO::FETCH_COLUMN, int $colno) PDO::query(string $sql, int $PDO::FETCH_CLASS, string $classname, array $ctorargs) PDO::query(string $sql, int $PDO::FETCH_INTO, object $object)注意する必要があるのは、
$sql です。 は必須です 実行された SQL ステートメント。残りのパラメーターは、ステートメントのデフォルトのフェッチ モードを設定するために使用されます。これは、結果オブジェクトの PDOStatement::setFetchMode() メソッドを呼び出すことと同じです。
<?php $dsn = 'mysql:host=127.0.0.1;dbname=test'; $user = 'root'; $pwd = 'root'; try{ $pdo = new PDO($dsn,$user,$pwd); $sql = "SELECT * FROM user WHERE name='壹壹'"; $res = $pdo -> query($sql,PDO::FETCH_ASSOC); print_r($res); }catch(PDOException $e){ echo '数据库连接失败:'.$e -> getMessage(); } ?>出力結果:
query() メソッドと
exec() メソッドの使用には、次の注意点があります。
prepare()<strong><span style="font-size: 20px;"></span></strong> メソッドと
execute() メソッド #異なるパラメータを繰り返し渡す必要がある場合、つまり、同じクエリを複数回実行する必要がある場合、準備されたステートメントを使用すると実装がより効率的になります。ステートメントを実行するには、PDO オブジェクトの prepare() メソッドを使用して実行するクエリを準備し、次に PDOStatement オブジェクトの
メソッドを使用してクエリを実行する必要があります。 。次に、prepare()
メソッドと execute()
メソッドを見てみましょう。 prepare() メソッドの構文形式は次のとおりです:
<pre class="brush:php;toolbar:false">PDO::prepare(string $statement[, array $driver_options = array()])</pre>
次の点に注意してください:
execute() メソッドの構文形式は次のとおりです。
PDOStatement::execute([array $input_parameters])
参数 $input_parameters
为一个元素个数和将被执行的 SQL 语句中绑定的参数一样多的数组。
SQL 语句模板中可以包含零个或多个参数占位标记,格式可以是命名(:name)或问号(?)的形式,当它执行时将用真实数据取代。
在同一个 SQL 语句里,命名和问号形式不能同时使用,只能选择其中一种参数形式。如果使用命名形式的占位标记,那么标记的命名必须是唯一的。
接下来我们看一下使用命名形式的参数占位符,查询指定的 SQL 语句,示例如下:
<?php $dsn = 'mysql:host=127.0.0.1;dbname=test'; $user = 'root'; $pwd = 'root'; try{ $pdo = new PDO($dsn,$user,$pwd); $sql = "SELECT name,age,sex FROM user WHERE age = :age"; $sth = $pdo -> prepare($sql); $sth -> execute([':age'=>11]); $res1 = $sth -> fetchAll(); $sth -> execute(array(':age'=>14)); $res2 = $sth -> fetchAll(); echo '<pre class="brush:php;toolbar:false">'; print_r($res1); print_r($res2); }catch(PDOException $e){ echo '数据库连接失败:'.$e -> getMessage(); } ?>
输出结果:
上述示例是使用命名形式的参数占位符,查询指定的 SQL 语句,接下来我们看一下使用问号形式的参数占位符,查询指定的 SQL 语句。示例如下:
<?php $dsn = 'mysql:host=127.0.0.1;dbname=test'; $user = 'root'; $pwd = 'root'; try{ $pdo = new PDO($dsn,$user,$pwd); $sql = "SELECT name,age,sex FROM user WHERE age = ? AND sex = ?"; $sth = $pdo -> prepare($sql); $sth -> execute([12,'男']); $res1 = $sth -> fetchAll(); $sth -> execute(array(11,'女')); $res2 = $sth -> fetchAll(); echo '<pre class="brush:php;toolbar:false">'; print_r($res1); print_r($res2); }catch(PDOException $e){ echo '数据库连接失败:'.$e -> getMessage(); } ?>
输出结果:
由此我们便通过使用问号形式的参数占位符,查询指定的 SQL 语句。
大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。
以上がPHP データベースの学習: PDO を使用して SQL ステートメントを実行する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。