PHP 链接多种数据库 的方法
数据库中 单词之间的空格(一个语句前面和后面做字符串拼接的时候最好留空格 ) 可以随便加 其他地方 禁止随便加空格!!(加了 就报错)!
=====================总结=========================
数据库链接执行①:
1.链接数据库
$dsn = "mysql:dbname=mydb;host=localhost"; //数据源 $pdo = new PDO($dsn,"root","123"); //链接数据库 引号内部 不能 随便 加空格
2.①查询语句query()
$sql = "select * from nation"; $a = $pdo->query($sql); //执行查询 $arr = $a->fetchAll(); var_dump($arr);//返回二维数组
②插入语句 exec()
$sql = "insert into nation values('n077','数据')" $a = $pdo->exec($sql); //执行其他语句,返回结果集
数据库链接执行②【等待执行 传入的数据 都能执行才可以执行 不然 就 所有数据都不能执行】
$dsn = "mysql:dbname=mydb;host=localhost"; $pdo = new PDO($dsn,"root","123"); //设置异常模式 $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); try { //开启事务 $pdo ->beginTransaction(); $sql1 = "insert into nation values('n080','是删')"; $sql2 = "insert into nation values('n070','好几款')"; $sql3 = "insert into nation values('n075','好几款')"; $pdo->exec($sql1); $pdo->exec($sql2); $pdo->exec($sql3); //提交 $pdo->commit(); } catch(Exception $e) { //抓住try里面出现的错误,并且处理 //echo $e->getMessage(); //获取异常信息 //回滚 $pdo->rollBack(); } //final() //{ //最终执行,无论以上try代码有没有出错,都会执行 //}
===============防止sql注入攻击===============
方法一 ? 方法 只可以使用 索引
1 <?php 2 3 //预处理语句防止SQL注入 4 $dsn = "mysql:dbname=mydb;host=localhost"; 5 $pdo = new PDO($dsn,"root","123"); 6 //$code = "n005"; 7 //SQL语句里面需要加占位符 ? 8 $sql = "select * from nation where code=?"; 9 //准备执行,返回PDOStatement对象 10 $st = $pdo->prepare($sql); 11 //调用绑定参数的方法来绑定参数 12 $st->bindParam(1,$code); 13 $name = "测试1"; 14 //执行方法 15 $attr = $st->fetchAll(); 16 var_dump($attr); 17 18 ?>
1 <?php 2 3 //预处理语句防止SQL注入 4 $dsn = "mysql:dbname=mydb;host=localhost"; 5 $pdo = new PDO($dsn,"root","123"); 6 7 //SQL语句里面需要加占位符 ? 8 $sql = "insert into nation values(?,?)"; 9 10 //准备执行,返回PDOStatement对象 11 $st = $pdo->prepare($sql); 12 //索引数组 13 $attr = array("n006","测试2"); 14 //执行方法 15 $st->execute($attr); 16 $attr = $st->fetchAll(); 17 var_dump($attr); 18 19 ?>
方法一 名称 方法 关联 有name的表单 (常用)
复杂方法 单个赋值
<?php $dsn = "mysql:dbname=mydb;host=localhost"; $pdo = new PDO($dsn,"root","123"); 占位符是字符串 $sql = "insert into nation values(:code,:name)"; $st = $pdo->prepare($sql); $st->bindParam(":code",$code,PDO::PARAM_STR); $st->bindParam(":name",$name,PDO::PARAM_STR); $code = "n007"; $name = "测试3"; $st->execute(); ?>
简化 将单个赋值 数组赋值(有关键字 name值)
1 <form action="addchuli.php" method="post"> 2 <div>代号:<input type="text" name="code" /></div> 3 <div>名称:<input type="text" name="name" /></div> 4 <input type="submit" value="添加" /> 5 </form>
<?php $dsn = "mysql:dbname=mydb;host=localhost"; $pdo = new PDO($dsn,"root","123"); //占位符是字符串 $sql = "insert into nation values(:code,:name)"; $st = $pdo->prepare($sql); $st->execute($_POST);{这里是上一页传过来的 post 数组}