【发布时间】:2017-07-17 23:53:33
【问题描述】:
我在 Wordpress 中使用 PHP 和 MYSQL,以便根据用户选择从数据库中检索数据,但此查询不返回任何数据。
我正在使用带有 prepare() 和 get_results() 的 $wpdb 类
并尝试回显查询以调试代码并分配正确的变量以便在数据库中的值与用户输入之间进行比较。
sql查询:
$sql = $wpdb->prepare("select i.siteID
, i.siteNAME
, i.equipmentTYPE
, c.latitude
, c.longitude
, c.height
, o.ownerNAME
, o.ownerCONTACT
, x.companyNAME
, y.subcontractorCOMPANY
, y.subcontractorNAME
, y.subcontractorCONTACT
from site_info i
LEFT
JOIN owner_info o
on i.ownerID = o.ownerID
LEFT
JOIN company_info x
on i.companyID = x.companyID
LEFT
JOIN subcontractor_info y
on i.subcontractorID = y.subcontractorID
LEFT JOIN site_coordinates c
on i.siteID=c.siteID
where
i.siteNAME = %s
AND
o.ownerNAME = %s
AND
x.companyNAME = %s
",$site_name,$owner_name,$company_name);
echo $site_name;
$query_submit =$wpdb->get_results($sql);
foreach ($query_submit as $obj) {
echo "query is working";
echo "<table width='30%' ";
echo "<tr>";
echo "<td>".$obj->siteNAME."</td>";
echo "<td>".$obj->ownerNAME."</td>";
echo "<td>".$obj->companyNAME."</td>";
echo "<td>".$obj->subcontractorNAME."</td>";
echo "<td>".$obj->siteID."</td>";
echo "<td>".$obj->equipmentTYPE."</td>";
echo "<td>".$obj->latitude."</td>";
echo "<td>".$obj->longitude."</td>";
echo "<td>".$obj->height."</td>";
echo "<td>".$obj->ownerCONTACT."</td>";
echo "<td>".$obj->subcontractorCONTACT."</td>";
echo "<td>".$obj->subcontractorCOMPANY."</td>";
echo "</tr>";
echo "</table>";
}
为了调试代码,我尝试回显 sql
回显 $sql; 它显示了带有分配给正确变量的值的 sql 查询。
谁能告诉我我的错误在哪里导致查询停止而不是运行到 foreach 循环中?
在我更改查询并将值作为字符串代替 %s 后,我得到了上述结果。 我意识到它不起作用的问题是什么,因为 %s 是一个数组,但是当我放入一个字符串时它工作正常。 我正在将字符串转换为数组,因为我不转换我会得到这个错误:
Xdebug: Fatal error: Uncaught Error: Cannot use object of type stdClass as array in /opt/lampp/htdocs/wordpress/wp-content/themes/wp-portfolio/search-info.php:245 Stack trace: #0 /opt/lampp/htdocs/wordpress/wp-includes/template-loader.php(74): include() #1 /opt/lampp/htdocs/wordpress/wp-blog-header.php(19): require_once('/opt/lampp/htdo...') #2 /opt/lampp/htdocs/wordpress/index.php(17): require('/opt/lampp/htdo...') #3 {main} thrown in /opt/lampp/htdocs/wordpress/wp-content/themes/wp-portfolio/search-info.php on line 245. Output triggered in /opt/lampp/htdocs/wordpress/wp-content/plugins/query-monitor/collectors/php_errors.php on line 163
【问题讨论】:
-
以纯文本形式发布查询。并显示您认为应该返回的数据。
-
@PaulSpiegel 我不明白你的要求我将编辑问题并添加必须返回的假定数据
-
@Strawberry 你在问什么??
标签: php mysql wordpress foreach