1
我想在表單中選擇性別時爲我的查詢添加一個WHERE。PHP bindParam和多個dropdownmenu的
我使用bindParam來使用一個dropdownmenu來獲得Year,但我想要第二個bindParam插入一個'AND Gender ='到查詢和一個'$ _GET ['dropdowngender']來填充它。
我想要使用if語句來查看是否正在使用dropdownmenu,並且如果選擇了性別信息將被添加到查詢。這是我迄今爲止的,但它似乎沒有工作。
<?php
@include ('conn.php');
$query = "SELECT Name, MAX(Count) AS MaxCount, ZIPcode, Year
FROM Name_Data
WHERE Year = :year ";
if(isset($_GET['dropdowngender']) {
$query = $query . " AND Gender = :gender ";
}
$query = $query . " AND Name_Data.Count =
(SELECT MAX(Count) FROM Name_Data AS f
WHERE f.id = Name_Data.id
) GROUP BY ZIPcode";
$query->bindParam(':year', $_GET['dropdownyear'], PDO::PARAM_STR);
if(isset($_GET['dropdowngender']) {
$query->bindParam(':gender', $_GET['dropdowngender'], PDO::PARAM_STR);
}
$query_send = $db->prepare($query);
$query->execute();
$result = $query->fetchAll (PDO::FETCH_ASSOC);
$jsonResult = json_encode($result);
echo $jsonResult;
?>
我的索引頁
<form method="post" action="#" id="form">
<select name="dropdownyear" id="menuyear">
<option selected>Choose a year</option>
</select>
<select name="dropdowngender" id="menugender">
<option value="M">Male</option>
<option value="F">Female</option>
</select>
</form>
我的jQuery腳本
$("#form")
.change(function(){
$(".marker").empty();
var SelectYear= $("#menuyear option:selected").text();
var SelectGender= $("#menugender option:selected").text();
$.getJSON("sql.php", { dropdownyear: SelectYear, dropdowngender: SelectGender }, function(jsonData) {
console.log(jsonData);
$.each(jsonData, function(key,row) {
var newDiv=$('<div>');
var Content = row ['Name'] + ' ';
newDiv.text(Content);
newDiv.appendTo($("#result"));
}); // each
}); //get json
}); // change function
誤差 致命錯誤:調用一個成員函數bindParam()在第25行的sql.php中的一個非對象,它是$ query-> bindParam(':year',$ _GET ['dropdownyear'],PDO :: PARAM_STR);我不知道在哪裏更改param_str,這是一個varchar權利? – lottebijl
準確地說,conn中有什麼,可以在導入之前刪除@符號。它抑制了conn.php –
K中的錯誤,爲您的代碼添加了一個完全未經測試的修改。它可以讓你去。請注意,代碼中還有其他一些可能需要修改的內容,但我沒有這樣做。 –