Jetzt reden wir über die Fehlerbehandlung in PHP
<?php $file=fopen("1.txt","r"); ?>
Wenn die Datei nicht existiert, meldet das System direkt einen Fehler
Verwenden Sie die, um die Fehlermeldung zu schreiben Sie selbst. Sterben bedeutet den Tod.
Um zu verhindern, dass Benutzer Fehlermeldungen wie die oben genannte erhalten, prüfen wir, ob die Datei vorhanden ist, bevor sie darauf zugreifen
<?php if(!file_exists("1.txt")) { die("File not found"); } else { $file=fopen("1.txt","r"); } ?>
Wenn die Datei nicht vorhanden ist, wird die Datei nicht als Fehler ausgegeben, die vom System verursacht wird
Tatsächlich ist die Fehlerbehandlung von PHP viel mehr als das, es gibt Ausnahmen usw.
Lass uns später darüber reden
Beginnen wir jetzt mit dem Hauptereignis und verwenden schließlich PHP, um die MySQL-Datenbank zu betreiben
Stellen Sie zunächst eine Verbindung zur Datenbank her
<?php $link = mysql_connect('localhost','root',''); if (!$link) { die('Could not connect to MySQL: ' . mysql_error()); } echo 'Connection OK'; mysql_close($link); ?>
$link Dies ist eine weitere Ressourcenvariable, die den Datenbankverbindungsstatus angibt. Sie können versuchen, zu drucken und zu sehen, was angezeigt wird
Die Funktion mysql_connect dient zum Herstellen einer Verbindung zur MySQL-Datenbank
Es gibt 3 Funktionen: nämlich Serveradresse, Datenbankbenutzername, Datenbankbenutzerkennwort
Die Funktion mysql_error kann die Ursache des Verbindungsfehlers ermitteln
mysql_close dient zum Schließen der Datenbankverbindung
Jetzt erstellen Sie eine Datenbank zuerst
Datenbanktest erstellen;
Dann eine Tabelle erstellen
Es ist ganz einfach
Geben Sie phpmyadmin ein und schauen Sie es sich an
Zuerst fügen wir ein paar Daten ein und werfen einen Blick darauf
Jetzt verbinden wir uns mit der MySQL-Datenbank und dann müssen Daten in eine der MySQL-Datenbanken einfügen
<?php $link = mysql_connect('localhost','root',''); if (!$link) { die('Could not connect to MySQL: ' . mysql_error()); } mysql_select_db('test',$link); mysql_query("insert into user (name,age) values ('harry',15)",$link); mysql_close($link); ?>
mysql_select_db ist die Funktion zum Auswählen der Datenbank
mysql_query dient zum Ausführen der SQL-Anweisungsfunktion, jede SQL kann ausgeführt werden , einschließlich der Erstellung von Datenbanken und Tabellen
Der zweite Parameter der beiden Funktionen kann weggelassen werden
mysql_select_db('test');
mysql_query("insert into user (name,age) ) Values ('harry ',15)");
Wenn der zweite Parameter keine Verbindungskennung angibt, wird die zuletzt geöffnete Verbindung verwendet. Wenn keine offene Verbindung besteht, wird mysql_connect() ohne Parameter aufgerufen, um zu versuchen, eine zu öffnen und zu verwenden
Jetzt prüfen, ob das Einfügen erfolgreich ist
ok wurde eingefügt
Jetzt verwenden wir das Formular, um Daten einzufügen
<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['name']; $age=$_POST['age']; if(isset($name)&&isset($age)) { $link = mysql_connect('localhost','root',''); if (!$link) { die('Could not connect to MySQL: ' . mysql_error()); } mysql_select_db('test'); $sql="insert into user (name,age) values ('$name',$age)"; if(mysql_query($sql)) echo "Insert Success!"; else echo "Insert Fail!".mysql_error(); mysql_close($link); } ?>
mysql_query() gibt TRUE zurück, wenn die SQL-Anweisung erfolgreich ausgeführt wird, und gibt FALSE zurück, wenn ein Fehler auftritt
Jetzt zeigen wir die Daten an
<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('localhost','root',''); if (!$link) { die('Could not connect to MySQL: ' . mysql_error()); } mysql_select_db('test'); //插入 $name=$_POST['name']; $age=$_POST['age']; if(isset($name)&&isset($age)) { $sql="insert into user (name,age) values ('$name',$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['id'] . "</td>"; echo "<td>" . $row['name'] . "</td>"; echo "<td>" . $row['age'] . "</td>"; echo "</tr>"; echo "</table>"; } mysql_free_result($result); mysql_close($link); ?> </body> </html>
$result=mysql_query($sql); $result ist auch eine Ressource Variable: Wenn mysql_query die Abfrage-SQL-Anweisung ausführt, ist das Rückgabeergebnis nicht mehr wahr und falsch, sondern eine Ergebnismenge. Sie können sich vorstellen, dass das Ergebnis der mysql_query-Abfrage eine Tabelle an $result zurückgibt und $result eine Tabelle (Ergebnis) ist set)
Die Funktion mysql_fetch_array ist speziell für die Verarbeitung von Ergebnismengen konzipiert. Sie ruft eine Zeile aus der Ergebnismenge als assoziatives Array, als numerisches Array oder beides ab
Warum müssen wir eine Schleife ausführen, da mysql_fetch_array jeweils nur eine Datenzeile aus der Ergebnismenge (Tabelle) abrufen kann
und diese Datenzeile dann in Form einer Ein- dimensionales assoziatives Array, $row ist ein eindimensionales assoziatives Array
mysql_fetch_array hat einen Zeiger, der darauf zeigt. Bei jeder Ausführung dieser Funktion zeigt der Zeiger automatisch auf die nächste Zeile. Wenn die Funktion erneut ausgeführt wird, Die Daten dieser Zeile können abgerufen werden. Bis zur letzten Zeile zeigt der Zeiger auf null, sodass die Schleife auch endet, weil sie leer ist.
Denken Sie nicht, dass $ row ein zweidimensionales Array ist ist immer eindimensional und wird bei jeder Schleife neu zugewiesen
Manche Leute bezweifeln vielleicht, dass ein Array auch als Schleifenbedingung verwendet werden kann? Ja
$a=array(1,2)
while($a)
Dies kann eine Schleife sein, aber es ist eine Endlosschleife
weil es in der Weile nur etwas gibt, das nicht 0 ist Klammern Es kann in einer Schleife ausgeführt werden
$row['name'] Es übernimmt nur der Wert aus dem Array?
Tatsächlich können Sie auch Array-Indizes verwenden Ich sage es nicht vorher. Tatsächlich haben assoziative Arrays auch die Eigenschaften gewöhnlicher Arrays und sind leistungsfähiger
Das ist also möglich
echo "<td>" . $row[0] . "</td>"; echo "<td>" . $row[1] . "</td>"; echo "<td>" . $row[2] . "</td>";
mysql_free_result dient dazu, Ressourcen freizugeben
Es Es ist nicht erforderlich, es zu verwenden, es muss nur nach der Rückkehr berücksichtigt werden. Es wird aufgerufen, wenn eine große Ergebnismenge viel Speicher beansprucht. Der gesamte zugehörige Speicher wird nach Beendigung des Skripts automatisch freigegeben.
Darüber hinaus kann mysql_fetch_row auch die Ergebnisse abfragen, ist jedoch im Vergleich zu mysql_fetch_array schwach. Hier ist nur eine Einführung zu dem, was in der Vergangenheit passiert ist. So etwas. . .
//Abfrage
$sql="select * from user"; $result=mysql_query($sql); while($row = mysql_fetch_row($result)) { 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 号
重新写下
"; echo "
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('localhost','root',''); if (!$link) { die('Could not connect to MySQL: ' . mysql_error()); } mysql_select_db('test'); //插入 $name=$_POST['name']; $age=$_POST['age']; if(isset($name)&&isset($age)) { $sql="insert into user (name,age) values ('$name',$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['id']?> Name: <input type="text" name="_name" value="<?=$row['name']?>"/> Age: <input type="text" name="_age" value="<?=$row['age']?>" /> <input type="hidden" name="id" value="<?=$row['id']?>" /> <input type="submit" value="修改"/> <a href="index.php?uid=<?=$row['id']?>">删除</a> </form> <?php } echo "总共".mysql_num_rows($result)."记录<br/>"; echo "每行".mysql_num_fields($result)."字段"; //修改 $name=$_POST['_name']; $age=$_POST['_age']; $id=$_POST['id']; if(isset($name)&&isset($age)&&isset($id)) { $sql="update user set name='$name',age='$age' where id=$id"; if(mysql_query($sql)) header("location:index.php"); else echo "Update Fail!".mysql_error(); } //删除 $uid=$_GET['uid']; 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('localhost','root',''); if (!$link) { die('Could not connect to MySQL: ' . mysql_error()); } mysql_select_db('test'); //插入 $name=$_POST['name']; $age=$_POST['age']; if(isset($name)&&isset($age)) { $sql="insert into user (name,age) values ('$name',$age)"; if(mysql_query($sql)) echo "Insert Success!"; else echo "Insert Fail!".mysql_error(); } //分页查询 if(isset($_GET['pager'])) $pager=($_GET['pager']-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='index.php?pager=".$i."'>".$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['id']?> Name: <input type="text" name="_name" value="<?=$row['name']?>"/> Age: <input type="text" name="_age" value="<?=$row['age']?>" /> <input type="hidden" name="id" value="<?=$row['id']?>" /> <input type="submit" value="修改"/> <a href="index.php?uid=<?=$row['id']?>">删除</a> </form> <?php } echo "总共".$num."记录<br/>"; echo "每行".mysql_num_fields($result)."字段"; //修改 $name=$_POST['_name']; $age=$_POST['_age']; $id=$_POST['id']; if(isset($name)&&isset($age)&&isset($id)) { $sql="update user set name='$name',age='$age' where id=$id"; if(mysql_query($sql)) header("location:index.php"); else echo "Update Fail!".mysql_error(); } //删除 $uid=$_GET['uid']; 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)!