0

私はこれを試しました:

$result = mysql_query("SELECT * from business WHERE ptype = '".$_GET["ptype"]."' AND state = '".$_GET["state"]."' AND city = '".$_GET["city"]."'") or die(mysql_error());   

しかし、3 つの GET を置かないと、MySql からエラーが発生します。

localhost/get_allinfo.php?ptype=PUB&state=センター

次に、MySQL エラーが発生します

私はこれを試しました:
しかし、URLに「状態」を入れても問題ありません$_GET["ptype"]) & (isset($_GET["state"]))

「ptype」からのみ結果を取得します

    if (isset($_GET["ptype"])) {
    $ptype = $_GET["ptype"];
    $result = mysql_query("SELECT * from business WHERE ptype = '$ptype'") or die(mysql_error());

}elseif(isset($_GET["ptype"]) & (isset($_GET["state"]))){
    $ptype = $_GET["ptype"];
    $state = $_GET["state"];
    $result = mysql_query("SELECT * from business WHERE ptype = '$ptype' and WHERE state = '$state") or die(mysql_error());
}else {

    $result = mysql_query("SELECT * FROM `business`") or die(mysql_error());
}
4

2 に答える 2

0

これにより、もう少し堅牢になります。

$sql = 'SELECT * from business';
$arrQueryString = array();
if(isset($_GET['ptype'])) $arrQueryString[] = 'ptype="'.$_GET['ptype'].'"';
if(isset($_GET['state'])) $arrQueryString[] = 'state="'.$_GET['state'].'"';
if(isset($_GET['city'])) $arrQueryString[] = 'city="'.$_GET['city'].'"';
$sql .= (count($arrQueryString)) ? ' WHERE '.implode(' AND ',$arrQueryString) : '';
$result = mysql_query($sql) or die(mysql_error());
于 2012-10-14T14:33:54.690 に答える
0

フォローが間違っている

SELECT * from business WHERE ptype = '$ptype' and WHERE state = '$state

そのはず:

SELECT * from business WHERE ptype = '$ptype' AND state = '$state'

WHERE でドキュメントを検索し、$state に終了引用符を追加します

if 条件の配置も変更します

if(isset($_GET["ptype"]) & (isset($_GET["state"]))){
$ptype = $_GET["ptype"];
$state = $_GET["state"];
$result = mysql_query("SELECT * from business WHERE ptype = '$ptype' AND state = '$state'") or die(mysql_error());
}elseif (isset($_GET["ptype"])) {
$ptype = $_GET["ptype"];
$result = mysql_query("SELECT * from business WHERE ptype = '$ptype'") or die(mysql_error());

}if(isset($_GET["ptype"]) & (isset($_GET["state"]))){
$ptype = $_GET["ptype"];
$state = $_GET["state"];
$result = mysql_query("SELECT * from business WHERE ptype = '$ptype' and WHERE state = '$state") or die(mysql_error());
}else {

$result = mysql_query("SELECT * FROM `business`") or die(mysql_error());
}

ptype は常に設定されています。つまり、コントロールは常に最初の if ステートメントに配置されます。状態が設定されていても。

PS。PDO/mysqli について学んでください。後悔することはありません。

于 2012-10-14T14:23:35.403 に答える