検索
ホームページバックエンド開発PHPチュートリアル突然、今週はちょっと忙しいことに気づきました - PHP 上級

こんにちは

まだ火曜日だけど、今週はちょっと忙しいことに気づいたので、まだ楽しみにしています – 私は今日の午後に街に行くので、見に戻ってきます夕方映画、明日の夜は鍋のディナーパーティーをして、明後日の午後に撮影します。短いビデオ、夕方にボールをプレーしなければならないかもしれません、金曜日、まあ、金曜日です。この状況が続くと、(ビアンの)週報をどうやって書けばいいのかさえわかりませんが、それでもそうすることは良い考えです。

1. PHP の高度な完成

11. データベース操作

11.1 PHP はどのデータベースをサポートしますか?

PHP は、対応する拡張機能をインストールすることでデータベース操作を実装します。するデータベースは必要ありません。現在の主流のデータベースには、MsSQL、MySQL、Sybase、Db2、Oracle、PostgreSQL、Access などが含まれます。PHP は、これらのデータベースをサポートする拡張機能をインストールできます。一般に、LAMP アーキテクチャとは、Linux、Apache、Mysql、 PHPではMysqlデータベースが広く使われているので、この章ではMysqlの操作方法を簡単に理解します。

11.2 データベース拡張機能

PHP のデータベースには、公式拡張機能やサードパーティによって提供される拡張機能など、1 つ以上の拡張機能が含まれる場合があります。 Mysql で一般的に使用される拡張機能にはネイティブ mysql ライブラリが含まれており、拡張された mysqli 拡張機能を使用することもでき、接続と操作に PDO を使用することもできます。

異なる拡張機能は基本的に同様の操作方法を提供しますが、いくつかの新しい機能が追加されたり、操作パフォーマンスが異なる場合があります。データベース接続のためのMysQl拡張法:

rreee

mysqli拡張拡張:

rreee

pdo拡張:rreee

pdo拡張

rreee ('データベース接続に失敗しました');

mysql_select_db('code1');mysql_query("セット名 'utf8'");$result = mysql_query('ユーザー制限 1 から * を選択');

$row = mysql_fetch_assoc ( $result);
print_r($row);


11.3 MySQL データベースへの接続

データベースを操作するには、通常、PHP がデータベースとの接続を確立する必要があります。データベースに接続するための機能 この機能では、データベース アドレス、ユーザー名、およびパスワードを指定する必要があります。

$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password');

PHP がデータベースに接続する方法は、mysql -hlocalhost -ucode1 -p のように、コマンド ラインで直接接続するのと似ています。接続が成功したら、オペレーティング データベースを選択し、 mysql_select_db 関数。

$link = mysqli_connect('mysql_host', 'mysql_user', 'mysql_password');

通常、最初に現在の接続で使用される文字エンコーディングを設定します。通常は utf8 エンコーディングを使用します。

$dsn = 'mysql:dbname=testdb;host=127.0.0.1';$user = 'dbuser';$password = 'dbpass';$dbh = new PDO($dsn, $user, $password);

上記の手順により、データベースとの接続が確立され、データ操作を実行できるようになります。

$host = '127.0.0.1';$user = 'code1';$pass = '';//ここにデータベース接続コードを書きます

mysql_connect($host,$user ,$pass);
mysql_select_db('code1');
mysql_query("set names 'utf8'");


11.4 MySQL クエリを実行します

データベース接続が確立された後、次を使用してクエリを実行できます。 mysql_query と SQL ステートメントの形式でクエリ命令をデータベースに送信します。

$host = 'localhost';$user = 'code1';$pass = '';$link = mysql_connect($host, $user, $pass);

クエリ クラス ステートメントの場合、リソース ハンドル (リソース) が返され、クエリ結果セット内のデータはこのリソースを通じて取得できます。

mysql_select_db('code1');

デフォルトでは、PHP は最も近いデータベース接続を使用してクエリを実行しますが、複数の接続がある場合は、パラメーター ディレクティブを通じてその接続からクエリを実行できます。

mysql_query("set names 'utf8'");

//データベースに接続します

mysql_connect('127.0.0.1', 'code1', '');

mysql_select_db('code1');mysql_query("set names 'utf8' ") ;//ここでデータクエリを実行します

$arr=mysql_query("ユーザー制限 1 から * を選択");
$row=mysql_fetch_row($arr);
print_r($row);
echo $row[0] ;

11.5 MySQL に新しいデータを挿入する



データクエリに mysql_query を使用する方法を理解した後、同様に、実際にデータを挿入するには、たとえば次の SQL ステートメントを実行します。

$res = mysql_query('select * from user limit 1');

通常、データは変数または配列に格納されるため、最初に SQL ステートメントを文字列結合する必要があります。

$row = mysql_fetch_array($res);var_dump($row);

mysql では、insert ステートメントを実行した後、自動インクリメントされる主キー ID を取得できます。これは、PHP の mysql_insert_id 関数を通じて取得できます。

$link1 = mysql_connect('127.0.0.1', 'code1', '');$link2 = mysql_connect('127.0.0.1', 'code1', '', true); //开启一个新的连接$res = mysql_query('select * from user limit 1', $link1); //从第一个连接中查询数据

この ID は、通常、挿入が成功したかどうかを判断するために、または他のデータ操作に関連付けられた ID として使用できます。

11.6 取得数据查询结果

通过前面的章节,我们发现PHP操作数据库跟MySql客户端上操作极为相似,先进行连接,然后执行sql语句,再然后获取我们想要的结果集。

PHP有多个函数可以获取数据集中的一行数据,最常用的是mysql_fetch_array,可以通过设定参数来更改行数据的下标,默认的会包含数字索引的下标以及字段名的关联索引下标。

$sql = "select * from user limit 1";$result = mysql_query($sql);$row = mysql_fetch_array($result);

可以通过设定参数MYSQL_NUM只获取数字索引数组,等同于mysql_fetch_row函数,如果设定参数为MYSQL_ASSOC则只获取关联索引数组,等同于mysql_fetch_assoc函数。

$row = mysql_fetch_row($result);$row = mysql_fetch_array($result, MYSQL_NUM); //这两个方法获取的数据是一样的
$row = mysql_fetch_assoc($result);$row = mysql_fetch_array($result, MYSQL_ASSOC);

如果要获取数据集中的所有数据,我们通过循环来遍历整个结果集。

$data = array();while ($row = mysql_fetch_array($result)) {    $data[] = $row;}

//连接数据库
mysql_connect('127.0.0.1', 'code1', '');
mysql_select_db('code1');
mysql_query("set names 'utf8'");
//数据预处理 防止查询不到数据
mysql_query("insert into user(name, age, class) values('王二', 19, '高三五班')");
//进行数据查询
$sql = "select * from user limit 1";
$result = mysql_query($sql);

//在这里获取一行数据
$row=mysql_fetch_assoc($result);

echo '

';<br>print_r($row);<br>echo '
';

11.7 查询分页数据

上一节中,我们了解到通过循环可以获取一个查询的所有数据,在实际应用中,我们并不希望一次性获取数据表中的所有数据,那样性能会非常的低,因此会使用翻页功能,每页仅显示10条或者20条数据。

通过mysql的limit可以很容易的实现分页,limit m,n表示从m行后取n行数据,在PHP中我们需要构造m与n来实现获取某一页的所有数据。

假定当前页为$page,每页显示$n条数据,那么m为当前页前面所有的数据,既$m = ($page-1) * $n,在知道了翻页原理以后,那么我们很容易通过构造SQL语句在PHP中实现数据翻页。

$page = 2;$n = 2;$m = ($page - 1) * $n;$sql = "select * from user limit $m, $n";$result = mysql_query($sql);//循环获取当前页的数据$data = array();while ($row = mysql_fetch_assoc($result)) {    $data[] = $row;}

在上面的例子中,我们使用了$m与$n变量来表示偏移量与每页数据条数,但我们推荐使用更有意义的变量名来表示,比如$pagesize, $start, $offset等,这样更容易理解,有助于团队协作开发。

//连接数据库
mysql_connect('127.0.0.1', 'code1', '');
mysql_select_db('code1');
mysql_query("set names 'utf8'");
//预设翻页参数
$page = 2;
$pagesize = 2;
//在这里构建分页查询
$start=($page-1)*$pagesize;

$sql="SELECT * FROM user LIMIT $start,$pagesize";

//获取翻页数据
$result = mysql_query($sql);
$data = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$data[] = $row;
}
echo '

';<br>print_r($data);<br>echo '
';

11.8 更新与删除数据

数据的更新与删除相对比较简单,只需要构建好相应的sql语句,然后调用mysql_query执行就能完成相应的更新与删除操作。

$sql = "update user set name = '曹操' where id=2 limit 1";if (mysql_query($sql)) {    echo '更新成功';}

同样的删除可以使用类似以下的代码:

$sql = "delete from user where id=2 limit 1";if (mysql_query($sql)) {    echo '删除成功';}

对于删除与更新操作,可以通过mysql_affected_rows函数来获取更新过的数据行数,如果数据没有变化,则结果为0。

$sql = "update user set name = '曹操' where id=2 limit 1";if (mysql_query($sql)) {    echo mysql_affected_rows();}

//连接数据库
mysql_connect('127.0.0.1', 'code1', '');
mysql_select_db('code1');
mysql_query("set names 'utf8'");
//预设数据以便进行更新操作
mysql_query("insert into user(name, age, class) values('王二', 19, '高三五班')");
$id = mysql_insert_id();
//在这里更新id为$id的行的名字为李白
$sql="update user set name='李白' where id=$id limit 1";
mysql_query($sql);
//输出更新数据条数
echo '数据更新行数:'.mysql_affected_rows();
mysql_query("delete from user where id='$id'");

11.9 关闭MySQL连接

当数据库操作完成以后,可以使用mysql_close关闭数据库连接,默认的,当PHP执行完毕以后,会自动的关闭数据库连接。

mysql_close();

虽然PHP会自动关闭数据库连接,一般情况下已经满足需求,但是在对性能要求比较高的情况下,可以在进行完数据库操作之后尽快关闭数据库连接,以节省资源,提高性能。

在存在多个数据库连接的情况下,可以设定连接资源参数来关闭指定的数据库连接。

$link = mysql_connect($host, $user, $pass);mysql_close($link);

//连接数据库
$con=mysql_connect('127.0.0.1', 'code1', '');
mysql_select_db('code1');
mysql_query("set names 'utf8'");
//在这里关闭数据库连接

mysql_close($con);

 

 

 

 

 

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPメール:ステップバイステップ送信ガイドPHPメール:ステップバイステップ送信ガイドMay 09, 2025 am 12:14 AM

PhpisusedForsedingEmailsDueToitsIttegration withServerMailServicesAndExternalSmtpproviders、自動化とMarketingCampaign.1)SetupYourphpenvironment withebeBironment witheBiserverandphp、保証

PHP経由で電子メールを送信する方法:例とコードPHP経由で電子メールを送信する方法:例とコードMay 09, 2025 am 12:13 AM

メールを送信する最良の方法は、PHPMailerライブラリを使用することです。 1)Mail()関数を使用することはシンプルですが信頼できないため、電子メールがスパムを入力するか、配信できない場合があります。 2)PHPMailerは、より良い制御と信頼性を提供し、HTMLメール、添付ファイル、SMTP認証をサポートします。 3)SMTP設定が正しく構成されていることを確認し、暗号化(StartTLSやSSL/TLSなど)を使用してセキュリティを強化します。 4)大量の電子メールについては、メールキューシステムを使用してパフォーマンスを最適化することを検討してください。

高度なPHPメール:カスタムヘッダーと機能高度なPHPメール:カスタムヘッダーと機能May 09, 2025 am 12:13 AM

customedersandaddadvancedfeaturesinphpemailentalitylivainability.1)customederadddetadata fortrackingandcategorization.2)htmLemailsallowStingtintintintintintinteractivity.3)添付物質の添付物質の添付

php&smtpでメールを送信するためのガイドphp&smtpでメールを送信するためのガイドMay 09, 2025 am 12:06 AM

PHPとSMTPを使用してメールを送信することは、PHPMailerライブラリを介して実現できます。 1)PHPMailerをインストールして構成する、2)SMTPサーバーの詳細を設定する、3)電子メールコンテンツを定義し、4)メールを送信してエラーを処理します。この方法を使用して、電子メールの信頼性とセキュリティを確保します。

PHPを使用して電子メールを送信する最良の方法は何ですか?PHPを使用して電子メールを送信する最良の方法は何ですか?May 08, 2025 am 12:21 AM

BestappRoachforseminginphpisusingthephpmailerlibrarydueToitsReliability、featurrichness、andeaseofuse.phpmailerSupportssmtpは、detairederorhandlingを提供します

PHPでの依存関係注射のベストプラクティスPHPでの依存関係注射のベストプラクティスMay 08, 2025 am 12:21 AM

依存関係注射(DI)を使用する理由は、コードのゆるい結合、テスト可能性、および保守性を促進するためです。 1)コンストラクターを使用して依存関係を注入します。2)サービスロケーターの使用を避け、3)依存関係噴射コンテナを使用して依存関係を管理する、4)依存関係を注入することでテスト可能性を向上させる、5)注入依存性を回避、6)パフォーマンスに対するDIの影響を考慮します。

PHPパフォーマンスのチューニングのヒントとコツPHPパフォーマンスのチューニングのヒントとコツMay 08, 2025 am 12:20 AM

phpperformancetuningisucial cuseenhancess andandandadsand。

PHP電子メールセキュリティ:電子メールを送信するためのベストプラクティスPHP電子メールセキュリティ:電子メールを送信するためのベストプラクティスMay 08, 2025 am 12:16 AM

bestpracticesforsendingemails securlyinphpinclude:1)sutureconsmttarttlsencryptionとの使用の使用、2)検証およびサンシジン化のinputStopReventinjectuctacks、3)adinitivedinitivedInemailsopenslsl、4)adlinglinglingemailoaに

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)