将连接和查询从mysql重写为PDO [英] rewrite connection and query from mysql to PDO
问题描述
Been始终将MySQL
与典型的mysql_query
或mysql_fetch_array
一起用于PHP,但是现在我将移至PDO: Prepared Statement
,因为这将是未来.
Been always used MySQL
with PHP with the typical mysql_query
or mysql_fetch_array
but now i'm moving to PDO: Prepared Statement
since it will be the future.
我是新手,并将其用于个人用途,所以我决定问您如何按照PDO: Prepared Statement
I'm newbie and using it for personal so i decide to ask you how to rewrite all this in rules of PDO: Prepared Statement
让我们假设我们有以下数据库users(id,name,job,number)
Let us suppose we've the following database 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
Now those are of normal Mysql so can anyone rewrite to be with 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
打开下一个新问题,因为我相信这对像我这样的新手很有帮助〜谢谢
That would really helps me a lot and discourage me to open next new question for insert,update,delete
as i believe this helpful for newbies like me ~ Thanks
推荐答案
PDO手册是学习几乎所有情况下的PDO的绝佳资源.准备好的语句乍看起来似乎很奇怪而且很困难,但是一旦掌握了一些基础知识,您就会爱上它们.
The PDO manual is an excellent resource for learning PDO for almost any situation. Prepared statements may seem bizarre and hard at first, but you will come to love them once you master some basics...
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();
In spite of the last (simple) example, I would also encourage you to learn how to do INSERT
queries for multiple values in one query. It's not only faster than doing many single INSERT
s, it's also considered good practice.
这篇关于将连接和查询从mysql重写为PDO的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!