我正在纠结于使用pdo在表中显示MySQL数据的pdo语句。
我的语法是:
$startdate=$_POST["start"];
$enddate=$_POST["end"];
$ttype=$_POST["ttype"];
$result = $db->query("SELECT cycletype,commenttype,adminstatus FROM v2loads where haulier= :haulier and :start < sarrive and :end> sarrive order by sarrive");
$result->bindParam(':haulier', $company, PDO::PARAM_STR);
$result->bindParam(':start', $startdate, PDO::PARAM_STR);
$result->bindParam(':end', $enddate, PDO::PARAM_STR);
$result->execute;
然后我尝试用
获取输出<table>
<? while($row = $jobs->fetch(PDO::FETCH_ASSOC)) { ?>
<tr>
<td>
<? echo $row['cycletype'];?>
<td>
<td>
<? echo $row['icommenttype];?>
<td>
<td>
<? echo $row['adminstatus'];?>
<td>
</tr>
<? } ?>
</table>
这会产生错误: 在非对象上调用成员函数bindParam()
任何帮助将不胜感激。 亲切的问候,
答案 0 :(得分:2)
这意味着您的查询未解析,$ result不是PDO语句对象。转储$db->errorInfo()以获取有关错误的更多详细信息。
可能就像“:end&gt;”一样简单在“&gt;”之前需要一个空格 - 我知道我倾向于把这些东西放在一边,也许是因为过去的痛苦:)
答案 1 :(得分:2)
使用prepare
方法而非query
准备好的陈述。
和
$result->execute();
而不是$result->execute;
while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
答案 2 :(得分:2)
这是你的剧本:
$startdate=$_POST["start"];
$enddate=$_POST["end"];
$ttype=$_POST["ttype"];
$result = $db->query("SELECT cycletype,commenttype,adminstatus FROM v2loads where haulier= :haulier and :start < sarrive and :end> sarrive order by sarrive");
$result->bindParam(':haulier', $company, PDO::PARAM_STR);
$result->bindParam(':start', $startdate, PDO::PARAM_STR);
$result->bindParam(':end', $enddate, PDO::PARAM_STR);
$result->execute;
将此更改为:
$startdate=$_POST["start"];
$enddate=$_POST["end"];
$ttype=$_POST["ttype"];
$result = $db->prepare("SELECT cycletype,commenttype,adminstatus FROM v2loads where haulier= :haulier and :start < sarrive and :end> sarrive order by sarrive");
$result->bindParam(':haulier', $company, PDO::PARAM_STR);
$result->bindParam(':start', $startdate, PDO::PARAM_STR);
$result->bindParam(':end', $enddate, PDO::PARAM_STR);
$result->execute;
然后尝试:
<table>
<? while($row = $result->fetch(PDO::FETCH_ASSOC)) { ?>
<tr>
<td>
<? echo $row['cycletype'];?>
<td>
<td>
<? echo $row['icommenttype];?>
<td>
<td>
<? echo $row['adminstatus'];?>
<td>
</tr>
<? } ?>
</table>
您在非对象上使用了bindparam
。prepare
而不是query
。
答案 3 :(得分:0)
答案的获取部分有一个拼写错误。
<? echo $row['icommenttype];?>
应为<? echo $row['icommenttype'];?>
我尝试编辑它,但由于SO的最低6个字符编辑策略而被拒绝。