我被告知我会更好地使用PDOMySQL转义,而不是mysql_real_escape_string.
也许我有一个脑死亡的日子(或者可能是因为我没有想象力是一个天生的程序员,而且我仍然处于PHP的新手阶段),但是检查了PHP手册并阅读了关于PDO的条目,我仍然不清楚PDO究竟是什么以及为什么它比使用更好mysql_real_escape_string.这可能是因为我还没有真正掌握OOP的复杂性(我假设它与OOP有关),但除了变量和数组值似乎在其前面有冒号之外,我仍然不确定它到底是什么以及你如何使用它(以及为什么它比它好mysql_real_escape_string.(它也可能与我没有真正理解'类'是什么的事实有关,所以,当我读到"PDO课程"时,我真的不是更聪明的.
在MySQL网站的"开发者专区"中读过一两篇文章后,我仍然不清楚.由于我现在甚至无法弄清楚它到底是什么,我认为现在可能使用它有点超出我的范围,但我仍然有兴趣扩大我的教育并找出如何改进的方法.
任何人都可以用"简单的英语"向我解释PDO是什么(或指向我用简单英语写的主题的方向),以及你如何使用它?
我是PHP和PDO的新手.我有一个关于PDO和单引号转义的非常基本的问题.我认为逃避不是必要的,但我仍然遇到了一些问题.
例如......我的数据库类中的以下方法在数据库中创建一个新对象.它是抽象的,我的所有类都扩展了数据库类.
public function create() {
$attributes = $this->attributes();
$question_marks = array();
foreach ($attributes as $key => $value) {
$question_marks[] = "?";
}
$place_holder = array_intersect_key($attributes, get_object_vars($this));
$place_holder = array_values($place_holder);
$sql = "INSERT INTO ".static::$table_name." (";
$sql .= join(", ", array_keys($attributes));
$sql .= ") VALUES (";
$sql .= join(", ", array_values($question_marks));
$sql .= ")";
$query = $handler->prepare($sql);
$query->execute($place_holder);
}
Run Code Online (Sandbox Code Playgroud)
如果我创建说例如新用户.我可以毫不费力地将James O'Reilly这个名字输入数据库......
但是,当我想使用我的更新方法....
public function update() {
$attributes = $this->attributes();
print_r($attributes);
$attribute_pairs = array();
foreach($attributes as $key => $value) {
if(isset($value)) …Run Code Online (Sandbox Code Playgroud)