通常我们不能直接在数据库操作增删改查,要通过PHP连接数据库来操作增删改查。PHP高版本(5.1)开始使用了PHP PDO。PDO可以连接多种数据库不局限于MySQL。
连接数据库
<?phpheader('Conten-Type: text/html; charset=utf-8');$dbms='mysql'; // 数据库类型$host='localhost'; // 主机名或ip地址$dbname= 'PHPlesson'; //数据库名称$user= 'root'; // 用户名$pass= ''; // 密码$dsn="$dbms:host=$host;dbname=$dbname"; // 拼接成串try {$dbh = new PDO($dsn,$user,$pass);echo "连接成功";} catch(PDOException $e){die("Error:" . $e.getMessage(). "<br>");}?>
首先在用header方法保证我们的输出是utf-8的,不会有乱码的出现。然后声明一堆变量(数据库类型、主机名、数据库名、用户名、密码、拼接好的连接数据库地址)。通过try catch来判断连接成功没有。如果成功了那么就会输出连接成功,失败的话就会输出Error,用PDOException来捕获异常 ,$e 包含PDOException
的所有方法。
查询
<?phpheader('Conten-Type: text/html; charset=utf-8');$dbms='mysql'; // 数据库类型$host='localhost'; // 主机名或ip地址$dbname= 'PHPlesson'; //数据库名称$user= 'root'; // 用户名$pass= ''; // 密码$dsn="$dbms:host=$host;dbname=$dbname"; // 拼接成串try {$dbh = new PDO($dsn,$user,$pass);echo "连接成功<br>";foreach($dbh->query('SELECT*FROM news') as $row){print_r($row);}} catch(PDOException $e){die("Error:" . $e.getMessage(). "<br>");}?>
通过$dbh 的 query() 方法可以实现数据库的增删改查,当然 query() 的参数就是SQL语句。
新增
<?phpheader('Conten-Type: text/html; charset=utf-8');$dbms='mysql'; // 数据库类型$host='localhost'; // 主机名或ip地址$dbname= 'PHPlesson'; //数据库名称$user= 'root'; // 用户名$pass= ''; // 密码$dsn="$dbms:host=$host;dbname=$dbname"; // 拼接成串try {$dbh = new PDO($dsn,$user,$pass);echo "连接成功<br>";$sql = "INSERT INTO `news`(`newstitle`, `newsimg`, `newscontent`, `addtime`) VALUES ('licheng','图片','内容','2020-02-20')";$res = $dbh->exec($sql);echo "添加成功,受影响的行数".$res;$dbh = null;} catch(PDOException $e){die("Error:" . $e.getMessage(). "<br>");}?>
通过 exec() 方法也是可以操作数据库的增删该查,参数也是SQL语句。但是操作完记得关闭数据库连接,否则会一直保持连接状态。正式服务上是通过数据库池连接的。
