【问题标题】:rewrite connection and query from mysql to PDO重写从mysql到PDO的连接和查询
【发布时间】:2013-02-04 15:15:04
【问题描述】:

一直使用 MySQL 和 PHP 以及典型的 mysql_querymysql_fetch_array,但现在我正在转向 PDO: Prepared Statement,因为它将是未来。

我是新手,将它用于个人,所以我决定问你如何在PDO: Prepared Statement的规则中重写所有这些

假设我们有以下数据库users(id,name,job,number)

CREATE TABLE `users` (
  `id` bigint(20) unsigned NOT NULL auto_increment,
  `name` varchar(255) default '0',
  `job` varchar(255) default NULL,
  `number` varchar(255) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

INSERT INTO `users` VALUES (1, 'John', 'Plumber', '555');
INSERT INTO `users` VALUES (2, 'Iva', 'Reporter', '666');
INSERT INTO `users` VALUES (3, 'Robert', 'Writer', '777');
INSERT INTO `users` VALUES (4, 'Irin', 'Writer', '888');

现在这些都是正常的Mysql,所以任何人都可以重写为PDO: Prepared Statement

1) 连接

$DB["host"]   = "localhost";
$DB["dbName"] = "dbname";
$DB["user"]   = "dbuser";
$DB["pass"]   = "dbpass";
$link = mysql_connect($DB["host"],$DB["user"],$DB["pass"]) or die("Connection Failed");
mysql_select_db($DB["dbName"]);

2) 从数据库准确条目调用

$sql = "select * from users where job='Plumber'";
$reg = mysql_query($sql) or die(mysql_error());
$aee = mysql_fetch_array($reg);

echo $aee[name]; // should gives name John

3) 从数据库结果调用

$qry="select * from users where job='Writer'";
$result=mysql_query($qry) or die($qry);

if(mysql_num_rows($result)=='0'){

echo "No results"; // if not found any for this conditional job

}else{
while($line=mysql_fetch_array($result)){

echo $line[name]."<br>"; // should gives Robert <br> Irin

}
}

这真的对我有很大帮助,并且不鼓励我为 insert,update,delete 打开下一个新问题,因为我相信这对像我这样的新手很有帮助~谢谢

【问题讨论】:

  • 2和3有什么区别?
  • 来吧,文档包含几乎所有内容的示例。不要在这里问只是为了避免查询手册。

标签: php mysql pdo


【解决方案1】:

PDO manual 是在几乎任何情况下学习 PDO 的绝佳资源。准备好的陈述一开始可能看起来很奇怪而且很难,但是一旦你掌握了一些基础知识,你就会爱上它们......

PDO SELECT...

$db = new PDO("mysql:host=localhost;dbname=db", "user", "password");

$query = "SELECT * FROM users WHERE name = " . $db->quote($name);

$result = $db->query($query);

while($row = $result->fetch(PDO::FETCH_ASSOC)) {
    print_r($row);
}

$result->closeCursor();

PDO INSERT...

$query = $db->prepare("INSERT INTO users (first_name, last_name, email) VALUES (:fname, :lname, :email)");

// bind params
$query->bindParam(":fname", $firstName);
$query->bindParam(":lname", $lastName);
$query->bindParam(":email", $email);

// execute the query
$query->execute();

尽管有最后一个(简单的)示例,我还鼓励您学习如何为multiple values in one query 执行INSERT 查询。它不仅比做许多单一的INSERTs 更快,而且被认为是一种很好的做法。

【讨论】:

    猜你喜欢
    • 2012-10-22
    • 1970-01-01
    • 2011-04-30
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 2011-02-22
    • 2010-11-06
    相关资源
    最近更新 更多