Jen*_*ell 5 database wordpress select wpdb
我使用Wordpress函数$ wpdb-> get_results()
https://codex.wordpress.org/Class_Reference/wpdb#SELECT_Generic_Results
它说:
"如果找不到匹配的行,或者存在数据库错误,则返回值将为空数组."
然后我怎么知道查询是否失败或者它是否为空?
Sag*_*ota 14
使用
$results=$wpdb->get_results($yoursql);
if (count($results)> 0){
//do here
}
Run Code Online (Sandbox Code Playgroud)
但是如果你想知道查询是否失败
$wpdb -> show_errors ();
$wpdb -> get_results ($wpdb -> prepare($sql));
$wpdb -> print_error ();
Run Code Online (Sandbox Code Playgroud)
在这里参加聚会有点晚,但我只是在寻找相同的东西。我浏览了wp-db.php
4.4.2版中的代码。
在1422行中,方法内部flush()
有一些代码可以重置last_error
属性:
$this->last_error = '';
Run Code Online (Sandbox Code Playgroud)
在第1693行的flush()
方法中调用此方法query()
:
$this->flush();
Run Code Online (Sandbox Code Playgroud)
该get_results()
方法query()
在第2322行调用:
if ( $query ) {
$this->query( $query );
} else {
return null;
}
Run Code Online (Sandbox Code Playgroud)
有了这个,我们可以确定每次都或多或少get_results()
(或者get_row()
也是如此)都被调用,query()
并且flush()
都被调用,这确保last_error
在执行查询之前将其设置为空字符串。
因此,假设查询正在运行(如果不运行,null
则返回-例如,如果查询为空),last_error
如果由于某种原因查询失败,则应包含一条错误消息。
由于每次last_error
都进行flush()
ed / reset,因此它只应包含针对最近运行的查询的错误,而不应包含针对先前已运行的任何查询的错误。考虑到这一点,应该安全last_error
地确定查询是否出了问题。
$results = $wpdb->get_results($sql);
if (is_null($results) || !empty($wpdb->last_error)) {
// Query was empty or a database error occurred
} else {
// Query succeeded. $results could be an empty array here
}
Run Code Online (Sandbox Code Playgroud)
在我看来,这不是最直观的方法,但这似乎足够了。
我个人wpdb
为自己的利益编写了自己的课程。这是我的getResults()
方法。
public function getResults($query, $bindings = [])
{
// Prepare the statement (My prepare method inspects $query and just returns it if there's no bindings, otherwise it uses $wpdb->prepare()
$prepared = $this->prepare($query, $bindings);
// Execute the statement
$rows = $this->db->get_results($prepared, ARRAY_A);
// If an array was returned and no errors occurred, return the result set
if (is_array($rows) && empty($this->db->last_error)) {
return $rows;
}
// On failure, return false
return false;
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
归档时间: |
|
查看次数: |
15714 次 |
最近记录: |