这是有关PHP数据对象的常见问题列表
由于PDO具有常规PHP用户未知的某些功能,因此有关PDO中的预准备语句和错误处理的问题非常频繁.所以,这只是一个可以找到它们的地方.
如果您的问题已与此列表密切相关,请在下面找到您的问题并将修复程序应用于您的代码.对其他问题进行简要介绍也是一个好主意,让自己为其他常见陷阱做好准备.
也可以看看
回覆,
我有以下查询:
$property =
Property::select(
DB::raw("title, lat, lng, (
3959 * acos(
cos( radians(:lat) ) *
cos( radians( lat ) ) *
cos( radians( lng ) - radians(:lng) ) +
sin( radians(:lat) ) *
sin( radians( lat ) )
)
) AS distance", ["lat" => $lat, "lng" => $lng, "lat" => $lat])
)
->having("distance", "<", $radius)
->orderBy("distance")
->take(20)
->get();
Run Code Online (Sandbox Code Playgroud)
它不起作用:Invalid parameter number: mixed named and positional parameters.
有没有人知道一个技巧或解决方法(我显然可以编写完整的查询,但更喜欢使用流利的构建器).
我被告知我会更好地使用PDOMySQL转义,而不是mysql_real_escape_string.
也许我有一个脑死亡的日子(或者可能是因为我没有想象力是一个天生的程序员,而且我仍然处于PHP的新手阶段),但是检查了PHP手册并阅读了关于PDO的条目,我仍然不清楚PDO究竟是什么以及为什么它比使用更好mysql_real_escape_string.这可能是因为我还没有真正掌握OOP的复杂性(我假设它与OOP有关),但除了变量和数组值似乎在其前面有冒号之外,我仍然不确定它到底是什么以及你如何使用它(以及为什么它比它好mysql_real_escape_string.(它也可能与我没有真正理解'类'是什么的事实有关,所以,当我读到"PDO课程"时,我真的不是更聪明的.
在MySQL网站的"开发者专区"中读过一两篇文章后,我仍然不清楚.由于我现在甚至无法弄清楚它到底是什么,我认为现在可能使用它有点超出我的范围,但我仍然有兴趣扩大我的教育并找出如何改进的方法.
任何人都可以用"简单的英语"向我解释PDO是什么(或指向我用简单英语写的主题的方向),以及你如何使用它?
我正在使用PHP的PDO层进行项目中的数据访问,我一直在阅读它并发现它对持久数据库连接有很好的内在支持.我想知道何时/是否应该使用它们.我会在CRUD沉重的应用程序中看到性能优势吗?是否存在需要考虑的缺点,可能与安全性有关?
如果对你很重要,我正在使用MySQL 5.x.
我应该使用PHP PDO或普通的mysql_connect在PHP中执行数据库查询吗?
哪一个更快?
PDO的一大好处是界面在多个数据库中是一致的.对于预处理语句也有一些很酷的函数,它们可以省去一些逃避所有查询字符串的麻烦.PDO的可移植性大于mysql_connect.
那么,我应该因为这些原因使用PDO还是坚持使用传统的mysql_connect?
如何使用PDO从表中获取所有列名?
id name age
1 Alan 35
2 Alex 52
3 Amy 15
Run Code Online (Sandbox Code Playgroud)
我想要的信息是,
id name age
Run Code Online (Sandbox Code Playgroud)
编辑:
这是我的尝试,
$db = $connection->get_connection();
$select = $db->query('SELECT * FROM contacts');
$total_column = $select->columnCount();
var_dump($total_column);
for ($counter = 0; $counter < $total_column; $counter ++) {
$meta = $select->getColumnMeta($counter);
$column[] = $meta['name'];
}
print_r($column);
Run Code Online (Sandbox Code Playgroud)
然后我明白了,
Array
(
[0] => id
[1] => name
[2] => age
...
)
Run Code Online (Sandbox Code Playgroud) 使用PDO更新数据库时出错.我是PDO的新手所以也许这个问题很小,我只是不明白. 关于错误的有趣的事情,命令工作正常,数据库确实得到更新. 但它仍然会向我返回一个错误.
码:
try {
$stmt = $pdo->prepare("UPDATE $page SET $section = :new_content WHERE $section = '$old_content'");
$stmt->execute(array(
'new_content' => $new_content
));
$result = $stmt->fetchAll();
echo "Database updated!";
}
catch(PDOException $e) {
echo 'ERROR UPDATING CONTENT: ' . $e->getMessage();
}
Run Code Online (Sandbox Code Playgroud)
错误: ERROR UPDATING CONTENT:SQLSTATE [HY000]:一般错误
我真的不知道问题出在哪里,因为它非常不透明,我无法找到任何有同样问题的人.
拜托,谁能告诉我这里我做错了什么?我只是从表中检索结果然后将它们添加到数组中.一切都按预期工作,直到我检查一个空的结果...
这将获得匹配,将其添加到我的数组并按预期回应结果:
$today = date('Y-m-d', strtotime('now'));
$sth = $db->prepare("SELECT id_email FROM db WHERE hardcopy = '1' AND hardcopy_date <= :today AND hardcopy_sent = '0' ORDER BY id_email ASC");
$sth->bindParam(':today',$today, PDO::PARAM_STR);
if(!$sth->execute()) {
$db = null ;
exit();
}
while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
$this->id_email[] = $row['id_email'] ;
echo $row['id_email'] ;
}
$db = null ;
return true ;
Run Code Online (Sandbox Code Playgroud)
当我尝试检查空结果时,我的代码返回'empty',但不再产生匹配结果:
$today = date('Y-m-d', strtotime('now'));
$sth = $db->prepare("SELECT id_email FROM db WHERE hardcopy = '1' AND hardcopy_date <= :today AND hardcopy_sent = …Run Code Online (Sandbox Code Playgroud)