我试图启用我的PHP安装的pdo驱动程序,但是当我运行命令 ./configure –prefix=/usr/local/webserver/php –with-apxs2=/usr/local/webserver/apache2/bin/apxs –enable-mbstring –enable-intl –with-icu-dir=/usr –with-pgsql=/usr/local/webserver/postgres –with-pdo-pgsql=/usr/local/webserver/postgres 我明白了 "Unable to build the PDO PostgreSQL driver: libpq 7.4+ is required" 我在该目录中安装postgresql /usr/local/webserver/postgres 我使用bin软件包并使用php 5.3安装了postgresql 9.0.4.1
我想在PHP PDO对象创build完成后select一个MySQL数据库。 我该怎么做呢? // create PDO object and connect to MySQL $dbh = new PDO( 'mysql:host=localhost;', 'name', 'pass' ); // create a database named 'database_name' // select the database we just created ( this does not work ) $dbh->select_db( 'database_name' ); 有没有相当于mysqli :: select_db的PDO? 也许我试图不正确地使用PDO? 请帮忙或解释。 编辑 我不应该使用PDO来创build新的数据库吗? 我明白,使用PDO的大部分好处都会在一个很less使用的操作中丢失,这个操作不会像CREATE DATABASE那样插入数据,但是使用不同的连接来创build数据库似乎很奇怪,然后创build一个PDO连接来使其他调用。
不久之前开始使用PDO准备好的语句,据我所知,它为您做了所有的转义/安全。 例如,假设$ _POST ['title']是一个表单字段。 $title = $_POST['title']; $query = "insert into blog(userID, title) values (?, ?)" $st = $sql->prepare($query); $st->bindParam(1, $_SESSION['user']['userID'], PDO::PARAM_INT); $st->bindParam(2, $title); $st->execute(); 这真的很安全吗? 我还需要做其他事情吗? 还有什么我需要考虑? 谢谢。
在PDO的例子中,我经常使用$dbh和$sth的缩写词。 我想$dbh代表“数据库句柄” – 对吗? 那么$sth呢? “声明句柄”? 有没有很好的理由使用上述而不是$db_connection和$query (或其他适当的)?
我刚刚在PHP中完成了一个介绍课程,并且在整个stackoverflow论坛上,人们都build议我切换到PDO,准备好语句或MYSQLi,我简要地检查了一下手册,但是大部分内容都在我的头上。 我一直在使用mysql_ *函数,所以这些概念对我来说是新的。 我认为他们是用来访问和执行数据库的具体行动,但我不知道。 那么PDO,准备好的语句和MySQLi之间有什么区别,它们是完成相同任务的不同function呢? 它们在脚本中是兼容的还是“select其中一个”? 最后哪个提供了最好的性能? 更新:感谢您的答案,我会寻找更多的PDO教程。 作为参考,我还发现以下职位有用: 哪一个是快速和轻 – mysqli或PDO mysqli或PDO – 有什么优点和缺点?
我偶尔会遇到类似于以下情况的查询: SELECT `key`, `value` FROM `settings`; 在这种情况下,我想获得一个关联数组,使用key & value作为数组的相应条目,例如,如果数据库包含:( ('first_name', 'Tom'), ('last_name', 'Jeferson') ,数组应该是array('first_name' => 'Tom', 'last_name' => 'Jeferson'); 。 最常见的方法是: $settings_flat = $db ->query("SELECT `name`, `value` FROM `settings`;") ->fetchAll(PDO::FETCH_ASSOC); $settings = array(); foreach ($settings_flat as $setting) { $settings[$setting['name']] = $setting['value']; } *另一种方法是通过调用fetchAll(PDO::FETCH_COLUMN)两次然后使用array_combine来创build数组。 但是,由于涉及两个数据库的调用,所以我忽略了这个选项。 有没有另外一种方法来做到这一点?
使用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(); } 错误:错误更新内容:SQLSTATE [HY000]:一般错误 我从字面上不知道问题出在哪里,因为这个问题很严重,而且我也找不到有同样问题的人。
这可能是一个简单的问题,但我很难理解如何解决这个问题。 我有一个表格,允许用户select“自定义”或“全部”职员“分配给一份工作。 如果select自定义,则用户通过单击每个checkbox来select人员,然后将其插入到作业表中。 这产生下面的数组(3,1,10是员工ID) Array ( [0] => 3 [1] => 1 [2] => 10 ) 如果select“全部员工”,我首先查询select语句,从员工表中获取所有员工ID,然后像上面一样插入到工作表中。 但是这会产生数组: Array ( [0] => Array ( [staffID] => 1 [0] => 1 ) [1] => Array ( [staffID] => 23 [0] => 23 ) [2] => Array ( [staffID] => 26 [0] => 26 ) [3] => […]
我正在学习PHP中的pdo,以便使数据库访问更容易,更高效。我已经读取了_class的一个解释,那就是在构造函数被调用之前,对象的属性被设置。这是什么意思? 任何方向,不胜感激。
我已经通过所有其他stackoverflow(和谷歌)职位与同样的问题,但似乎没有解决我的问题。 我正在使用pdo和php。 我的代码: $vals = array( ':from'=>$email, ':to'=>$recipient, ':name'=>$name, ':subject'=>$subject, ':message'=>$message ); print_r($vals); try { $pdo = new PDOConfig(); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "SELECT * FROM messages WHERE `message` LIKE :message"; $q = $pdo->prepare($sql); $q->execute(array(':message' => $vals[':message'])); $resp = $q->fetchAll(); foreach ($resp as $row) { throw new Exception('Please do not post the same message twice!'); […]