始终使用PHP MySQL
与典型的mysql_query
或mysql_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
打开下一个新问题,因为我相信这对像我这样的新手很有帮助〜谢谢
答案 0 :(得分:2)
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();
尽管有最后一个(简单)示例,但我还是鼓励您学习如何INSERT
查询multiple values in one query。它不仅比单个INSERT
更快,它也被认为是一种很好的做法。