学习PHP PDO ..想知道在涉及多个查询时使用它的正确方法
在过去,我只想创建一个连接数据库的类,然后运行一堆方法来运行查询..就像这样:
class connectDB { public $db_host = "asdf.db.asdf.hostedresource.com"; public $db_name = "asdf"; public $db_user = "asdf"; public $db_pass = "asdf!1"; public $result; function setDB_Host($value){ $this->db_host=$value; } function setDB_name($value){ $this->db_name=$value; } function setDB_user($value){ $this->db_user=$value; } function setDB_pass($value){ $this->db_pass=$value; } function makeConnection() { $connection = mysql_connect($this->db_host,$this->db_user,$this->db_pass) or die ("Unable to connect!"); mysql_select_db($this->db_name) or die(mysql_error()); } function setQuery($query) { $this->result = mysql_query($query) or die(mysql_error()); } class video { public $sequence; public $fileName; public $vidTitle; public $vidCat; public $thumbName; function addVideo($sequence,$fileName,$vidTitle,$vidCat,$thumbName) { $this->connect-> setQuery("SELECT COUNT(id) AS numrows FROM vids WHERE vidCat = '$vidCat'"); $row = mysql_fetch_array($this->connect->result); $sequence = $row['numrows'] + 1; $this->connect->setQuery("INSERT INTO vids (sequence,fileName,vidTitle,vidCat,thumbName) VALUES ('$sequence','$fileName','$vidTitle','$vidCat','$thumbName') "); } function addKeypoints($keypoints,$mins,$secs) { $v_id = mysql_insert_id(); for ($i=0; $i<sizeof($keypoints); $i++) { $totalsecs = ($mins[$i]*60) + $secs[$i]; $this->connect->setQuery("INSERT INTO keypoints (v_id,totalsecs,keypoints,mins,secs) VALUES ('$v_id','$totalsecs','$keypoints[$i]','$mins[$i]','$secs[$i]') "); } } 不想读所有这些.基本上我只是运行一堆访问我的第一个类的方法,并运行查询.我不明白这在PDO环境中是如何工作的. PDO应该让这种事情变得更容易,因为它是基于OOP的……正确吗? $hostname = "aaa.db.7149468.aaa.com"; $username = "coolcaaaaodez"; $password = "aaaa"; try { $dbh = new PDO("mysql:host=$hostname;dbname=coolcodez",$username,$password); $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $stmt = $dbh->prepare("INSERT INTO links (link,cool,difficulty) values (:link,:cool,:difficulty)"); $stmt->bindParam(':link',$_POST['link']); $stmt->bindParam(':cool',$_POST['cool']); $stmt->bindParam(':difficulty',$_POST['difficulty']); if(isset($_POST['submit-links'])) { $stmt->execute(); echo "row added <br />"; } } catch(PDOException $e) { echo $e->getMessage(); } 基本上我要问的是..尝试/捕捉的东西真的让我感到高兴.是否只需将连接本身放入try / catch块中,然后我可以在属于某个类的每个方法中准备查询?或者每个事件序列(数据库连接,查询,结果等)都需要卡在try / catch块中. PDO对我的需求有点花哨,但我正在努力学习,并且我想知道在涉及大量查询时编写它的最佳通用方法. 解决方法
是的……在某种程度上. 实际上,您需要的所有代码都是 if(isset($_POST['submit-links'])) { require 'pdo.php'; $sql = "INSERT INTO links (link,difficulty) values (?,?,?)"; $data = array($_POST['link'],$_POST['cool'],$_POST['difficulty']); $dbh->prepare($sql)->execute($data); } 其余的代码是多余的,原因有两个: >当然,数据库连接代码应该存储在一个单独的文件中并包含在所有其他文件中,而不是每次都重复.可以在PDO tag wiki中找到连接代码的一个很好的示例 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |