Maison >développement back-end >tutoriel php >L'apprentissage PHP prend officiellement le large (6)
Parlons maintenant de la gestion des erreurs en PHP
<?php $file=fopen("1.txt","r"); ?>
Si le fichier n'existe pas, le système signalera directement une erreur
Utilisez die pour écrire le message d'erreur vous-même. Mourir signifie la mort. , indiquant une erreur
Afin d'éviter que les utilisateurs ne reçoivent des messages d'erreur comme celui ci-dessus, nous vérifions si le fichier existe avant d'y accéder
<?php if(!file_exists("1.txt")) { die("File not found"); } else { $file=fopen("1.txt","r"); } ?>
Si le fichier n'existe pas, le fichier ne sera pas imprimé, plutôt que des erreurs provenant du système
En fait, la gestion des erreurs de PHP est bien plus que cela, il y a des exceptions, etc.
On en reparle plus tard
Commençons maintenant par l'événement principal, et enfin, utilisons PHP pour faire fonctionner la base de données mysql
Tout d'abord, connectez-vous à la base de données
<?php $link = mysql_connect('localhost','root',''); if (!$link) { die('Could not connect to MySQL: ' . mysql_error()); } echo 'Connection OK'; mysql_close($link); ?>
$link Ceci est une autre variable de ressource, indiquant l'état de connexion à la base de données. Vous pouvez essayer d'imprimer et voir ce qui apparaîtra
La fonction mysql_connect consiste à se connecter à la base de données mysql
Il y a 3 fonctions, à savoir l'adresse du serveur, le nom d'utilisateur de la base de données, le mot de passe de l'utilisateur de la base de données
La fonction mysql_error peut connaître la cause de l'erreur de connexion
mysql_close consiste à fermer la connexion à la base de données
Créez maintenant un base de données d'abord
créer un test de base de données;
Ensuite créer une table
C'est super simple
Entrez phpmyadmin et jetez un oeil
Nous insérons d'abord quelques données et jetons un œil
Maintenant, nous allons nous connecter à la base de données MySQL, puis nous devez insérer des données dans l'une des bases de données mysql
<?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 est la fonction pour sélectionner la base de données
mysql_query consiste à exécuter la fonction d'instruction SQL, n'importe quel SQL peut être exécuté , y compris la création de bases de données et de tables
Le deuxième paramètre des deux fonctions peut être omis
mysql_select_db('test');
mysql_query("insert into user (name,age) ) valeurs ('harry ',15)");
Si le deuxième paramètre ne précise pas d'identifiant de connexion, la dernière connexion ouverte est utilisée. S'il n'y a pas de connexion ouverte, mysql_connect() sera appelé sans paramètres pour essayer d'en ouvrir une et de l'utiliser
Voyez maintenant si l'insertion est réussie
ok a été inséré
Maintenant, nous utilisons le formulaire pour insérer des données
<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() renvoie TRUE lors de l'exécution réussie de l'instruction SQL, et renvoie FALSE lorsqu'une erreur se produit
Affichons maintenant les données
<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); variable, lorsque mysql_query exécute l'instruction SQL de requête, le résultat renvoyé n'est plus vrai et faux, mais un ensemble de résultats. Vous pouvez imaginer que le résultat de la requête mysql_query renvoie une table à $result, et $result est une table (result). set)
La fonction mysql_fetch_array est spécialement conçue pour traiter les ensembles de résultats. Elle obtient une ligne de l'ensemble de résultats sous la forme d'un tableau associatif, d'un tableau numérique ou des deux. mysql_query($sql) est lui-même l'ensemble de résultats.
Pourquoi avons-nous besoin de boucler ? , car mysql_fetch_array ne peut récupérer qu'une seule ligne de données de l'ensemble de résultats (table) à la fois
puis donner cette ligne de données à $row sous la forme d'une seule ligne. tableau associatif dimensionnel, $row est un tableau associatif unidimensionnel
mysql_fetch_array a un pointeur vers lui. Pour chaque ligne, chaque fois que cette fonction est exécutée, le pointeur pointe automatiquement vers la ligne suivante. Si la fonction est à nouveau exécutée, les données de cette ligne peuvent être obtenues. Jusqu'à la dernière ligne, le pointeur pointera vers null, donc la boucle se terminera également car elle est vide
Ne pensez pas que $row est un tableau à deux dimensions. est toujours unidimensionnel et est réaffecté à chaque fois qu'il boucle
Certaines personnes peuvent douter qu'un tableau puisse également être utilisé comme condition de boucle ? Oui
$a=array(1,2)
while($a)
Cela peut être bouclé, mais c'est une boucle infinie
car il n'y a que quelque chose qui n'est pas 0 dans le temps brackets Il peut être bouclé
$row['name'] Il prend simplement la valeur du tableau Vous vous souvenez du tableau associatif ?
En fait, vous pouvez également utiliser des indices de tableau, je l'ai fait. Je ne le dis pas avant. En fait, les tableaux associatifs ont aussi les caractéristiques des tableaux ordinaires et sont plus puissants
Donc c'est possible
echo "<td>" . $row[0] . "</td>"; echo "<td>" . $row[1] . "</td>"; echo "<td>" . $row[2] . "</td>";
mysql_free_result c'est libérer des ressources
C'est ça. Il n'est pas nécessaire de l'utiliser, il ne doit être pris en compte qu'après le retour. Il est appelé lorsqu'un grand ensemble de résultats occupe beaucoup de mémoire. Toute la mémoire associée sera automatiquement libérée après la fin du script
De plus, mysql_fetch_row peut également interroger les résultats, mais comparé à mysql_fetch_array, il est faible. Voici juste une introduction. à ce qui s'est passé dans le passé. Une telle chose. . .
//Requête
$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)!