ホームページ > バックエンド開発 > PHPチュートリアル > PHP 学習が正式に出発します (6)

PHP 学習が正式に出発します (6)

黄舟
リリース: 2023-03-04 11:38:02
オリジナル
995 人が閲覧しました

それでは、php のエラー処理について説明しましょう

<?php
$file=fopen("1.txt","r");
?>
ログイン後にコピー

ファイルが存在しない場合、システムは直接エラーを報告します
die を使用してエラー メッセージを自分で書くことができます。Die は死を意味し、エラーを意味します

ユーザーが上記のようなエラー メッセージを受け取るのを防ぐため、ファイルにアクセスする前にファイルが存在するかどうかを確認します

<?php
if(!file_exists("1.txt"))
{
die("File not found");
}
else
{
$file=fopen("1.txt","r");
}
?>
ログイン後にコピー

ファイルが存在しない場合は、システムからのエラーの代わりに「ファイルが見つかりません」と表示されます


実際、PHP のエラー処理はこれよりもはるかに多く、後で例外が発生するなどです。
それについては後ほど説明します

それではメインイベントを開始し、最後に PHP を使用して mysql データベースを操作します

まず、データベースに接続します

<?php
$link = mysql_connect(&#39;localhost&#39;,&#39;root&#39;,&#39;&#39;);
if (!$link) {
die(&#39;Could not connect to MySQL: &#39; . mysql_error());
}
echo &#39;Connection OK&#39;; mysql_close($link);
?>
ログイン後にコピー

$link これはデータベース接続ステータスを示す別のリソース変数です。印刷してみて、何が起こるかを確認できます。mysql_connect 関数は、サーバー アドレス、データベース ユーザー名、データベース ユーザー パスワードの 3 つの関数があります。 mysql_error 関数は、データベース接続を閉じるために、まずデータベースを作成します
それからテーブルを作成します




phpmyadmin と入力してください。見てください



PHP 学習が正式に出発します (6)

まず、確認するためにいくつかのデータを挿入します


次に、mysqlデータベースに接続し、次にmysqlデータベースの1つにデータを挿入する必要があります

<?php
$link = mysql_connect(&#39;localhost&#39;,&#39;root&#39;,&#39;&#39;);
if (!$link) {
die(&#39;Could not connect to MySQL: &#39; . mysql_error());
}
mysql_select_db(&#39;test&#39;,$link);
mysql_query("insert into user (name,age) values (&#39;harry&#39;,15)",$link);
mysql_close($link);
?>
ログイン後にコピー
PHP 学習が正式に出発します (6)mysql_select_dbはデータベースを選択する関数

mysql_queryはSQL文を実行する関数です。データベースとテーブルを作成する2つの関数を含む任意のSQLを実行できます

2番目のパラメータは省略可能ですPHP 学習が正式に出発します (6)mysql_select_db('test');

mysql_query("insert into user (name,age) value ('harry',15)");

2 番目のパラメーターで接続識別子が指定されていない場合は、最後に開かれた接続が使用されます。開いている接続がない場合、mysql_connect() がパラメーターなしで呼び出され、接続を開いて使用しようとします

それでは、挿入が成功したかどうかを見てみましょう



ok 挿入されました

今、フォームを使用しますデータを挿入するには

<html>
<body> <form action="" method="post">
Name: <input type="text" name="name" />
Age: <input type="text" name="age" />
<input type="submit" />
</form> </body>
</html>
ログイン後にコピー
<?php
$name=$_POST[&#39;name&#39;];
$age=$_POST[&#39;age&#39;];
if(isset($name)&&isset($age))
{
$link = mysql_connect(&#39;localhost&#39;,&#39;root&#39;,&#39;&#39;);
if (!$link) {
die(&#39;Could not connect to MySQL: &#39; . mysql_error());
}
mysql_select_db(&#39;test&#39;);
$sql="insert into user (name,age) values (&#39;$name&#39;,$age)";
if(mysql_query($sql))
echo "Insert Success!";
else
echo "Insert Fail!".mysql_error();
mysql_close($link);
}
?>
ログイン後にコピー

mysql_query() は SQL ステートメントが正常に実行された場合は TRUE を返し、エラーが発生した場合は FALSE を返します

それではデータを表示してみましょう

PHP 学習が正式に出発します (6)

<html>
<body> <form action="" method="post">
Name: <input type="text" name="name" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
<?php
//数据库连接
$link = mysql_connect(&#39;localhost&#39;,&#39;root&#39;,&#39;&#39;);
if (!$link) {
die(&#39;Could not connect to MySQL: &#39; . mysql_error());
}
mysql_select_db(&#39;test&#39;); //插入
$name=$_POST[&#39;name&#39;];
$age=$_POST[&#39;age&#39;];
if(isset($name)&&isset($age))
{ $sql="insert into user (name,age) values (&#39;$name&#39;,$age)";
if(mysql_query($sql))
echo "Insert Success!";
else
echo "Insert Fail!".mysql_error(); }
//查询
$sql="select * from user";
$result=mysql_query($sql);
while($row = mysql_fetch_array($result))
{
echo "<table>";
echo "<tr>";
echo "<td>" . $row[&#39;id&#39;] . "</td>";
echo "<td>" . $row[&#39;name&#39;] . "</td>";
echo "<td>" . $row[&#39;age&#39;] . "</td>";
echo "</tr>";
echo "</table>";
} mysql_free_result($result);
mysql_close($link); ?>
</body>
</html>
ログイン後にコピー


$result=mysql_query($sql); mysql_query が実行されると、これもリソース変数です。SQL ステートメントをクエリすると、返される結果は true と false ではなくなり、mysql_query クエリの結果が $result と $ にテーブルを返すと想像できます。 result はテーブル (結果セット) です
mysql_fetch_array 関数は結果セットの処理に特化しており、結果セットから行を連想配列または数値配列、あるいはその両方として取得します。mysql_query($sql) 自体が結果です。 set
なぜループする必要があるのでしょうか? mysql_fetch_array は一度に 1 行のデータのみを結果セット (テーブル) からフェッチできるため、このデータ行は 1 次元の連想配列の形式で $row に渡されます。 $row は 1 次元の連想配列であり、実行が完了すると、この関数が再度実行されると、ポインタは自動的に次の行を指します。この行のデータは取得できますが、最後の行までは空を指しているので、$row は常に 1 次元の配列であると考えてはいけません。ループするたびに再代入されるのですが、配列もループ条件として使用できるのではないかと疑問に思う人もいるかもしれません。はい

$a=array(1,2)

while($a)
これはループできますが、無限ループです
while括弧内の0以外のものはすべてループできるためです

$row [' name'] は配列から値を取得するだけです。実際、結合配列には通常の配列の特性もあり、さらに強力です。 . それで、これは大丈夫です


echo "<td>" . $row[0] . "</td>";
echo "<td>" . $row[1] . "</td>";
echo "<td>" . $row[2] . "</td>";
ログイン後にコピー

mysql_free_resultはリソースを解放するためのものです
これを使用する必要はなく、大きな結果セットを返すときにどれだけのメモリが占​​有されるかを考慮する場合にのみ呼び出す必要があります。関連付けられたメモリはすべて、スクリプト終了後に自動的に解放されます




さらに、mysql_fetch_row は結果をクエリすることもできますが、mysql_fetch_array と比較すると、ここではそのようなものの紹介にすぎません。 。 。

//クエリ

$sql="select * from user";
$result=mysql_query($sql);
while($row = mysql_fetch_row($result))
{
echo "";
echo "";
echo "<td>" . $row[0] . "</td>";
echo "<td>" . $row[1] . "</td>";
echo "<td>" . $row[2] . "</td>";
echo "";
echo "
"; }
ログイン後にコピー

mysql_fetch_row() 从和指定的结果标识关联的结果集中取得一行数据并作为数组返回。每个结果的列储存在一个数组的单元中
则row不再是关联数组而是普通数组,所以只能用数组下标


下面说说几个常用的数据显示函数
int mysql_num_rows ( resource $result )
mysql_num_rows() 返回结果集中行的数目。此命令仅对 SELECT 语句有效
int mysql_num_fields ( resource $result )
mysql_num_fields() 返回结果集中字段的数目
int mysql_insert_id ([ resource $link_identifier ] )
mysql_insert_id() 返回给定的 link_identifier 中上一步 INSERT 查询中产生的 AUTO_INCREMENT 的 ID 号

重新写下

 
 
Name: Age:
"; echo ""; echo "<td>" . $row[0] . "</td>"; echo "<td>" . $row[1] . "</td>"; echo "<td>" . $row[2] . "</td>"; echo ""; echo ""; } echo "总共".mysql_num_rows($result)."记录
"; echo "每行".mysql_num_fields($result)."字段"; mysql_free_result($result); mysql_close($link); ?>
ログイン後にコピー

header("Content-Type:text/html;charset=gbk"); 这个是表明文件编码格式,显示中文需要这样
error_reporting(0); 屏蔽一切系统提示的注意,警告,和错误

现在完成 修改和删除部分

<?php
header("Content-Type:text/html;charset=gbk");
error_reporting(0);
?> <html>
<body> <form action="" method="post">
Name: <input type="text" name="name" />
Age: <input type="text" name="age" />
<input type="submit" />
</form> <?php
//数据库连接
$link = mysql_connect(&#39;localhost&#39;,&#39;root&#39;,&#39;&#39;);
if (!$link) {
die(&#39;Could not connect to MySQL: &#39; . mysql_error());
}
mysql_select_db(&#39;test&#39;);
//插入
$name=$_POST[&#39;name&#39;];
$age=$_POST[&#39;age&#39;];
if(isset($name)&&isset($age))
{ $sql="insert into user (name,age) values (&#39;$name&#39;,$age)";
if(mysql_query($sql))
echo "Insert Success!";
else
echo "Insert Fail!".mysql_error(); } /
/查询
$sql="select * from user";
$result=mysql_query($sql);
while($row = mysql_fetch_array($result))
{
?>
<form action="" method="post">
ID: <?=$row[&#39;id&#39;]?>
Name: <input type="text" name="_name" value="<?=$row[&#39;name&#39;]?>"/>
Age: <input type="text" name="_age" value="<?=$row[&#39;age&#39;]?>" />
<input type="hidden" name="id" value="<?=$row[&#39;id&#39;]?>" />
<input type="submit" value="修改"/>
<a href="index.php?uid=<?=$row[&#39;id&#39;]?>">删除</a>
</form> <?php
} echo "总共".mysql_num_rows($result)."记录<br/>";
echo "每行".mysql_num_fields($result)."字段";
//修改
$name=$_POST[&#39;_name&#39;];
$age=$_POST[&#39;_age&#39;];
$id=$_POST[&#39;id&#39;];
if(isset($name)&&isset($age)&&isset($id))
{ $sql="update user set name=&#39;$name&#39;,age=&#39;$age&#39; where id=$id";
if(mysql_query($sql))
header("location:index.php");
else
echo "Update Fail!".mysql_error(); }
//删除
$uid=$_GET[&#39;uid&#39;];
if(isset($uid))
{ $sql="delete from user where id=$uid";
if(mysql_query($sql))
header("location:index.php");
else
echo "Delete Fail!".mysql_error(); }
mysql_close($link); ?>
</body>
</html>
ログイン後にコピー


至此,php对mysql数据库的增删改查操作就全在这一个页面了,灰常的简单

加了个简单的分页,超简单的。。。。暂时就不讲解怎么个来的了,加了简单的注释,大家应该能看懂代码

<?php
header("Content-Type:text/html;charset=gbk");
error_reporting(0);
?> <html>
<body> <form action="" method="post">
Name: <input type="text" name="name" />
Age: <input type="text" name="age" />
<input type="submit" />
</form> <?php
//数据库连接
$link = mysql_connect(&#39;localhost&#39;,&#39;root&#39;,&#39;&#39;);
if (!$link) {
die(&#39;Could not connect to MySQL: &#39; . mysql_error());
}
mysql_select_db(&#39;test&#39;); //插入
$name=$_POST[&#39;name&#39;];
$age=$_POST[&#39;age&#39;];
if(isset($name)&&isset($age))
{ $sql="insert into user (name,age) values (&#39;$name&#39;,$age)";
if(mysql_query($sql))
echo "Insert Success!";
else
echo "Insert Fail!".mysql_error(); } //分页查询
if(isset($_GET[&#39;pager&#39;]))
$pager=($_GET[&#39;pager&#39;]-1)*5;
else
$pager=0; $sql="select * from user";
$result=mysql_query($sql);
$num=mysql_num_rows($result); //总共记录数
$page=ceil($num/5); //总共多少页 这里每页5条记录 ceil函数四舍五入的。。
for($i=1;$i<=$page;$i++)
echo "<a href=&#39;index.php?pager=".$i."&#39;>".$i."</a>"; $
sql="select * from user limit $pager,5";
$result=mysql_query($sql);
while($row = mysql_fetch_array($result))
{
?>
<form action="" method="post">
ID: <?=$row[&#39;id&#39;]?>
Name: <input type="text" name="_name" value="<?=$row[&#39;name&#39;]?>"/>
Age: <input type="text" name="_age" value="<?=$row[&#39;age&#39;]?>" />
<input type="hidden" name="id" value="<?=$row[&#39;id&#39;]?>" />
<input type="submit" value="修改"/>
<a href="index.php?uid=<?=$row[&#39;id&#39;]?>">删除</a>
</form> <?php
} echo "总共".$num."记录<br/>";
echo "每行".mysql_num_fields($result)."字段"; //修改
$name=$_POST[&#39;_name&#39;];
$age=$_POST[&#39;_age&#39;];
$id=$_POST[&#39;id&#39;];
if(isset($name)&&isset($age)&&isset($id))
{ $sql="update user set name=&#39;$name&#39;,age=&#39;$age&#39; where id=$id";
if(mysql_query($sql))
header("location:index.php");
else
echo "Update Fail!".mysql_error(); }
//删除
$uid=$_GET[&#39;uid&#39;];
if(isset($uid))
{ $sql="delete from user where id=$uid";
if(mysql_query($sql))
header("location:index.php");
else
echo "Delete Fail!".mysql_error(); }
mysql_close($link); ?>
</body>
</html>
ログイン後にコピー

暂时先到这里了
php后面内容还有很多,还有对象等知识,光数据操作就还有面向对象的

 以上就是php学习正式起航(6)的内容,更多相关内容请关注PHP中文网(www.php.cn)!


関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート