ホームページ > バックエンド開発 > PHPチュートリアル > 今週は突然少し忙しくなりました。 。遊ぶ - PHP 上級、少し忙しい - php_PHP チュートリアル

今週は突然少し忙しくなりました。 。遊ぶ - PHP 上級、少し忙しい - php_PHP チュートリアル

WBOY
リリース: 2016-07-12 09:03:52
オリジナル
886 人が閲覧しました

今週は突然少し忙しくなりました。 。楽しみのため - 上級 PHP、ちょっと忙しい - php

こんにちは

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

1. PHP 上級章

11. データベース操作

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

PHP は、対応する拡張機能をインストールすることでデータベース操作を実装します。最新のアプリケーションの設計はデータベースのアプリケーションと切り離すことができません。現在の主流のデータベースには、MsSQL、MySQL、Sybase、Db2、Oracle、PostgreSQL、Access などが含まれます。PHP はこれらのデータベースをインストールできます。サポートの拡張、一般的に言えば、LAMP アーキテクチャは、Linux、Apache、Mysql、PHP を指します。そのため、Mysql データベースは PHP で広く使用されています。この章では、Mysql の操作方法を簡単に理解します。

11.2データベース拡張

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

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

データベース接続用のMysql拡張メソッド:

リーリー

mysqli拡張子:

リーリー

PDO拡張子

リーリー

$link = mysql_connect('127.0.0.1', 'code1', '') or die('データベース接続に失敗しました');
mysql_select_db('code1');
mysql_query("set names 'utf8 '");
$result = mysql_query('ユーザー制限 1 から * を選択');
$row = mysql_fetch_assoc($result);
print_r($row);

11.3 MySQLデータベースに接続します

PHP でデータベースを操作するには、通常、データベースへの接続を確立する必要があります。この関数では、データベースのアドレス、ユーザー名、パスワードを指定する必要があります。

リーリー

PHP がデータベースに接続する方法は、次のようなコマンドラインで直接接続するのと似ています。 mysql -hlocalhost -ucode1 -p接続が成功した後、操作するデータベースを選択し、mysql_select_db 関数を使用してデータベースを選択する必要があります。

リーリー

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

リーリー

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

$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 ステートメントの形式を使用してクエリを実行し、クエリ命令をデータベースに送信できます。

リーリー

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

リーリー

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

リーリー

//データベースに接続します
mysql_connect('127.0.0.1', 'code1', '');
mysql_select_db('code1');
mysql_query("set names 'utf8'");
// ここでデータクエリを実行します
$arr=mysql_query("select * from userlimit 1");
$row=mysql_fetch_row($arr);
print_r($row);
echo $row[0];

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

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

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

リーリー

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

リーリー

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

11.6 データクエリ結果を取得する

これまでの章を通じて、PHP でのデータベースの操作は、最初に接続し、次に SQL ステートメントを実行して、必要な結果セットを取得する操作と非常に似ていることがわかりました。

PHP には、データセット内のデータ行を取得できる関数が複数あります。最も一般的に使用されるのは、パラメータを設定することで行データの添字を変更できる関数です。デフォルトには、数値インデックスの添字が含まれます。フィールド名のインデックス添字。

$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);

 

 

 

 

 

www.bkjia.com本当http://www.bkjia.com/PHPjc/1077136.html技術記事今週は突然少し忙しくなりました。 。プレイ - PHP 上級者、少し忙しい - php こんにちは。まだ火曜日ですが、今週は少し忙しいことに気づきました。今日は午後遅くに街に行くのをまだ楽しみにしています...
関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート