2012-10-14 20 views
0
工作

我嘗試這樣做:四個變量不能與MYSQL

$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得到一個錯誤:

本地主機/ get_allinfo.php ?p型= PUB &狀態=中心

然後我得到一個MySQL錯誤

我嘗試這樣做:
但如果我把「狀態」 URL $_GET["ptype"]) & (isset($_GET["state"]))

我從「P型」得到的結果只有

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()); 
} 
+0

您的腳本可能是脆弱的[SQL注入](https://www.owasp.org/index.php/SQL_Injection)。 – Gumbo

+0

謝謝,我會閱讀它。 – iZikoo

回答

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()); 
+0

謝謝先生!你是我的英雄! – iZikoo

0

下列哪項是錯誤

SELECT * from business WHERE ptype = '$ptype' and WHERE state = '$state 
沒關係

它應該是:

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

查找文件在WHERE和結尾引號添加到$狀態

通貨膨脹也改變位置的你,如果條件

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()); 
} 

你的p型始終設置,這意味着,如果你的發言始終控制在那張1。即使狀態已經設定。

PS。瞭解PDO/mysqli,你不會後悔。

+0

謝謝先生,但它繼續顯示所有「ptype」的結果我想它顯示「ptype」有權利「狀態」 – iZikoo

+0

我編輯我的答案,這應該工作 – Sarwara