I have run into error below but it seems like I can't get proper error logs.
WordPress database error Query was empty for query made by
I had this codes that will throw almost similar to the error above.
$query_select = $wpdb->get_results($wpdb->prepare(
" % "
, 1
),ARRAY_A);
My question is, what are the possible codes that will throw query was empty
like in my above code.
答案 0 :(得分:1)
有一些可能的方法来获得这些类型的错误。以下用法可能对您有用,也可能没用。
使用$ wpdb对象
第一种方法 - 将$ wpdb声明为全局并使用它来执行返回PHP对象的SQL查询语句
Sub pTest()
Dim co As ChartObject
Dim ch As Chart
Dim s As Series
Dim p As Point
Set co = Worksheets(1).ChartObjects(1)
Set ch = co.Chart
Set s = ch.SeriesCollection(1)
i = 2
Call copyChartTest(co, ch, i)
End Sub
Sub copyChartTest(ByRef co As ChartObject, ByRef cht As Chart, ByVal i As Integer)
Dim ch As Chart ' The overlay chart
Set ch = co.Duplicate.Chart
' Set callout
ch.SetElement (msoElementDataLabelCallout)
' Invisibil-ate!
With ch
.ChartArea.Fill.Visible = msoFalse
.SeriesCollection(1).Format.Line.Visible = False
.ChartTitle.Delete
.Legend.Delete
For j = 1 To .SeriesCollection(1).Points.Count
.SeriesCollection(1).Points(j).Format.Fill.Visible = msoFalse
If j <> i Then .SeriesCollection(1).Points(j).HasDataLabel = False
Next j
End With
' Align the charts
With ch
.Parent.Top = cht.Parent.Top
.Parent.Left = cht.Parent.Left
End With
End Sub
第二种方法 - 利用$ GLOBALS超全局。不需要全局关键字(但可能不是最佳实践)
global $wpdb;
$results = $wpdb->get_results( 'SELECT * FROM wp_options WHERE option_id = 1', OBJECT );
有些用户在下面的堆栈交换链接中询问了这些类型的问题 To refer:
答案 1 :(得分:1)
DataType
方法为WordPress执行此功能,它支持类似sprintf()和vsprintf()的语法。
支持%s(字符串),%d(整数)和%f(浮点)格式。
SQL字符串文字中的所有%字符(包括LIKE通配符)必须以%%的形式进行双倍转义。
因此,如果我们调试您的代码,我们喜欢这样:
$wpdb->prepare
结果将是:$sql = $wpdb->prepare(" % ", 1);
die( var_dump($sql) );
OMG是一个空字符串!这就是我们看到string ' ' (length=1)
错误的原因。
prepare方法期望格式字符串包含以下任何内容; query was empty
,%d
或%s
。因此,如果您希望SQL查询为%f
,则需要将代码更改为:
1
或者,如果您希望SQL为$query_select = $wpdb->get_results( $wpdb->prepare('%d', 1), ARRAY_A );
,则需要使用另一个%
将其转义为:{/ p>
%
您可以在此处找到有关准备方法和占位符的更多信息Class Reference/wpdb « WordPress Codex
答案 2 :(得分:0)
当我们执行wp db query时,它会在上次查询中更改属性。 我不明白你的问题,但如果这对你有帮助,请遵循以下代码。
global $wpdb;
$wpdb->get_results( $wpdb->prepare(" % " , 1 ) );
if( $wpdb->last_error ){
//print_r( $wpdb->dbh)
$dbh = $wpdb->dbh;
echo $dbh->errno; // if no == 1065 then query was empty
echo $dbh->error; // Query was empty
}
答案 3 :(得分:0)
https://codex.wordpress.org/Class_Reference/wpdb 看看例子。 准备必须有一个有效的SQL查询,其中包含查询中所需变量的占位符:
$wpdb->prepare(
"
SELECT sum(meta_value)
FROM $wpdb->postmeta //valid sql statements here
WHERE meta_key = %s
",
$meta_key)
同时你的代码什么都不做:
$wpdb->prepare(
" % " //no sql statements here
, 1 ...)
看起来你想要
select * from someTable where someField % 1 -- (it will return no rows)
所以,任何空查询都会返回此错误。