Quantcast
Channel: Programming Forums
Viewing all articles
Browse latest Browse all 51036

Number of bound variables does not match number of tokens

$
0
0
I keep getting the following error:

Quote

Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
when trying to build a dynamic SQL query. Any idea where the damage is being done? I've searched for hours and still no luck :stupid:

$park = $_POST["park"];
$lecturestyle_id = $_POST["lecturestyle"];
$group_size = $_POST["groupsize"];
$roomstructure_id = $_POST["roomstructure"];
$array = explode(",", $_POST["facilities"]);

// change Mon here

echo '<td class="gridSide">
Mon
';

// build facilities search

for($i = 0; $i < count($array); $i++){	
	if ($array[$i]!=0) {
	$fac .= ' AND facilities_id='.$array[$i].'';
	}
	else
	$fac .= '';
}

echo '</td>';


for ($i = 1; $i <= 9; $i++) 
{

		// change mon here
		
		echo '<td class="box" id="mon'.$i.'">';
		
		// dynamically build sql query
		
		$sql = 
		"
		SELECT DISTINCT COUNT(*) FROM ts_room rm
		LEFT JOIN ts_roomfacilities rf
		ON rm.id = rf.room_id
		LEFT join ts_facilities f
		ON f.id = rf.facilities_id
		LEFT JOIN ts_building b
		ON rm.building_id=b.id
		WHERE capacity>=:group_size";
		
		$sql .= $fac;
		
		if($park!="Any") {
		$sql .= " AND b.park_id=:park";
		}
		
		if($lecturestyle_id!="Any") {
		$sql .= " AND lecturestyle_id=:lecturestyle_id";
		}
		
		if($roomstructure_id!="Any") {
		$sql .= " AND roomstructure_id=:roomstructure_id";
		}
		
		$sql .= " AND rm.id NOT IN
		(SELECT COUNT(*)
		 FROM ts_request rq
		 LEFT JOIN ts_allocation a ON a.request_id = rq.id
		 WHERE 
		 day_id=1 AND period_id=:period
		 OR a.status IS NOT NULL
		 AND a.status IN ('Pending','Declined','Failed'))";
				
		 $stm = $pdo->prepare( $sql );
		 $stm->execute( array( ':roomstructure_id' => $roomstructure_id, ':lecturestyle_id' => $lecturestyle_id, 
		 ':group_size' => $group_size, ':park' => $park, ':period' => $i));
		 $rows = $stm->fetchColumn();
	
		 echo $rows.'<br>free</td>';			
		 echo '</td>';

}

Viewing all articles
Browse latest Browse all 51036

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>