通常我们不能直接在数据库操作增删改查,要通过PHP连接数据库来操作增删改查。PHP高版本(5.1)开始使用了PHP PDO。PDO可以连接多种数据库不局限于MySQL。

连接数据库


  1. <?php
  2. header('Conten-Type: text/html; charset=utf-8');
  3. $dbms='mysql'; // 数据库类型
  4. $host='localhost'; // 主机名或ip地址
  5. $dbname= 'PHPlesson'; //数据库名称
  6. $user= 'root'; // 用户名
  7. $pass= ''; // 密码
  8. $dsn="$dbms:host=$host;dbname=$dbname"; // 拼接成串
  9. try {
  10. $dbh = new PDO($dsn,$user,$pass);
  11. echo "连接成功";
  12. } catch(PDOException $e){
  13. die("Error:" . $e.getMessage(). "<br>");
  14. }
  15. ?>

首先在用header方法保证我们的输出是utf-8的,不会有乱码的出现。然后声明一堆变量(数据库类型、主机名、数据库名、用户名、密码、拼接好的连接数据库地址)。通过try catch来判断连接成功没有。如果成功了那么就会输出连接成功,失败的话就会输出Error,用PDOException来捕获异常 ,$e 包含PDOException
的所有方法。

查询


  1. <?php
  2. header('Conten-Type: text/html; charset=utf-8');
  3. $dbms='mysql'; // 数据库类型
  4. $host='localhost'; // 主机名或ip地址
  5. $dbname= 'PHPlesson'; //数据库名称
  6. $user= 'root'; // 用户名
  7. $pass= ''; // 密码
  8. $dsn="$dbms:host=$host;dbname=$dbname"; // 拼接成串
  9. try {
  10. $dbh = new PDO($dsn,$user,$pass);
  11. echo "连接成功<br>";
  12. foreach($dbh->query('SELECT*FROM news') as $row){
  13. print_r($row);
  14. }
  15. } catch(PDOException $e){
  16. die("Error:" . $e.getMessage(). "<br>");
  17. }
  18. ?>

通过$dbhquery() 方法可以实现数据库的增删改查,当然 query() 的参数就是SQL语句。

新增

  1. <?php
  2. header('Conten-Type: text/html; charset=utf-8');
  3. $dbms='mysql'; // 数据库类型
  4. $host='localhost'; // 主机名或ip地址
  5. $dbname= 'PHPlesson'; //数据库名称
  6. $user= 'root'; // 用户名
  7. $pass= ''; // 密码
  8. $dsn="$dbms:host=$host;dbname=$dbname"; // 拼接成串
  9. try {
  10. $dbh = new PDO($dsn,$user,$pass);
  11. echo "连接成功<br>";
  12. $sql = "INSERT INTO `news`(`newstitle`, `newsimg`, `newscontent`, `addtime`) VALUES ('licheng','图片','内容','2020-02-20')";
  13. $res = $dbh->exec($sql);
  14. echo "添加成功,受影响的行数".$res;
  15. $dbh = null;
  16. } catch(PDOException $e){
  17. die("Error:" . $e.getMessage(). "<br>");
  18. }
  19. ?>

通过 exec() 方法也是可以操作数据库的增删该查,参数也是SQL语句。但是操作完记得关闭数据库连接,否则会一直保持连接状态。正式服务上是通过数据库池连接的。