【发布时间】:2014-01-14 19:49:48
【问题描述】:
我有一个填充$row["app_id"] 的查询,当我浏览我的div id="reveal" 时,app_id 发生了变化。我要做的是将 app_id 插入 $revealstmt 查询中。我不断收到错误消息。
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid
parameter number: number of bound variables does not match number of tokens
我的代码如下
<?php
$revealid = $row["app_id"];
while (isset($revealid)){
$query3 = "";
$revealstmt = $conn->prepare("SELECT logs.time_entry AS logs_entry, logs.description AS logs_description, substates.name AS reveal_substates_name FROM logs LEFT OUTER JOIN applications ON logs.fk_app_id = applications.pk_app_id LEFT OUTER JOIN substates ON logs.fk_substate_id = substates.pk_substate_id WHERE logs.fk_app_id = <?php echo $revealid ?> and time_entry >= curdate() - INTERVAL DAYOFWEEK(curdate()) + 14 DAY ORDER BY time_entry DESC;");
$revealstmt->execute(array('query3' => $query3));
?>
<div id="<?php echo $row["app_name"];?>" class='reveal-modal'>
<div id="reveal">
<h1><?php echo $row["app_name"]; echo $revealid; ?>
<br />
</h1>
<div class="accordion">
<?php while ($revealrow = $revealstmt->fetch()){?>
<h3><a href=""><?php echo $revealrow["logs_entry"]?> -|- <?
php echo $revealrow["reveal_substates_name"]; ?></a></h3>
<div><?php echo $revealrow["logs_description"]; ?></div>
<?php } ?> <!-- Close Tag for $revealrow -->
<?php } ?> <!-- Close tag for the while(isset) -->
我尝试过使用 foreach 但不能,因为 $row["app_id"] 不是一个数组,它一次只返回 1 个数字。
希望我已经提供了所有需要的信息,如果没有,我当然会添加我需要的任何信息。再次感谢社区的所有帮助!
【问题讨论】:
-
query3在您的 SQL 查询中出现在哪里?另外,我认为您的占位符需要以:开头。 -
<?php echo $revealid ?>在查询中做了什么?你已经在 PHP 中了,你不能仅仅这样做。请改用串联。 -
我很可能是错的,因为我显然正在学习。我认为 query3 是从 SQL 查询返回的数组。另外我会检查连接。我没有意识到你可以在 SQL 查询中做到这一点,我认为你必须回到 php。