我尝试从wordpress外部手动获取Wordpress table wp_post
上的一行。我按如下方式使用PDO:
$dbh2 = new PDO("mysql:host=" . DB_HOST . ";dbname=" . DB_NAME, DB_USER, DB_PASSWORD);
$dbh2->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $dbh2->prepare("SELECT WP.* FROM wp_posts WP, wp_term_relationships WTR WHERE WP.ID = WTR.object_id AND WP.ID = '821'");
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($results as $result){
print_r($result);
}
查询有效,但我得到一个非常奇怪的结果:列post_content
返回为NULL
,即使它不为空(我在PhpMyAdmin上查看过。标题为:821的帖子存在且充满内容。)
为什么在该列上返回NULL?
附加说明:
post_content
列有longtext
类型post_content
里面有很长的文字,2086个字符和完整的html标签。 编辑:答案是正确无误的。奇怪的是var_dump
正确输出内容,而来自FirePHP的函数fb()
返回NULL。小心!
答案 0 :(得分:1)
检索'longtext'(blob)列的示例的实现。
注意:手册不正确关于返回一个流,因为它返回一个字符串,其中包含'lob'的内容。
$pdo = new PDO("mysql:host=localhost;dbname=testmysql", 'test', 'test');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->prepare("SELECT WP.ID,
WP.post_title,
WP.post_content,
length(WP.post_content) AS post_length
FROM
wp_posts WP
WHERE
WP.ID = :ID");
// which record to select
$stmt->bindValue(':ID', 821, PDO::PARAM_INT);
// store output in these variables
$stmt->bindColumn(1, $wpId, PDO::PARAM_INT);
$stmt->bindColumn(2, $wpTitle, PDO::PARAM_STR);
$stmt->bindColumn(3, $wpContent, PDO::PARAM_LOB);
$stmt->bindColumn(4, $wpLength, PDO::PARAM_INT);
$stmt->execute();
$results = $stmt->fetch(PDO::FETCH_BOUND);
// display output
var_dump($wpId, $wpTitle, $wpLength);
var_dump($wpContent);
表定义
Field Type
------------ ------------
ID bigint(20)
post_title varchar(255)
post_content longtext
示例输出:
int 821
string 'first' (length=5)
int 2741
string 'First Post - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean lacus urna, impe'... (length=2741)