学习PHP PDO ..想知道在涉及多个查询时使用它的正确方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了学习PHP PDO ..想知道在涉及多个查询时使用它的正确方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3495字,纯文字阅读大概需要5分钟。
内容图文
![学习PHP PDO ..想知道在涉及多个查询时使用它的正确方法](/upload/InfoBanner/zyjiaocheng/769/9a231caf4c1642b0b9308f99f10e8bea.jpg)
在过去,我只想创建一个连接数据库的类,然后运行一堆方法来运行查询..就像这样:
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对我的需求有点花哨,但我正在努力学习,并且我想知道在涉及大量查询时编写它的最佳通用方法.
解决方法:
PDO should be making this sort of thing easier since it’s OOP based.. correct?
是的……在某种程度上.
作为优秀的工具,OOP需要一些使用技巧 – 只有这样才能使事情更容易.否则,它将使事情变得更加艰难.
实际上,您需要的所有代码都是
if(isset($_POST['submit-links']))
{
require 'pdo.php';
$sql = "INSERT INTO links (link, cool, difficulty) values (?, ?, ?)";
$data = array($_POST['link'], $_POST['cool'], $_POST['difficulty']);
$dbh->prepare($sql)->execute($data);
}
其余的代码是多余的,原因有两个:
>当然,数据库连接代码应该存储在一个单独的文件中并包含在所有其他文件中,而不是每次都重复.可以在PDO tag wiki中找到连接代码的一个很好的示例
>这种尝试捕获的东西,确实让许多缺乏经验的开发人员感到困惑.事实上,你根本不需要它 – 或者至少不是这种形式.仅仅因为PHP可以自己处理错误(并且比普通的PHP用户做得更好,说实话).所以,你可以省略这个try / catch的东西.进一步阅读:The (im)proper use of try..catch.
内容总结
以上是互联网集市为您收集整理的学习PHP PDO ..想知道在涉及多个查询时使用它的正确方法全部内容,希望文章能够帮你解决学习PHP PDO ..想知道在涉及多个查询时使用它的正确方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。