簡體   English   中英

使PHP和MySQL讀取URL

[英]Getting PHP and MySQL to read url

因此,我希望能夠在SQL中使用WHERE命令從表中選擇某些值。 這是我當前的代碼,但是不起作用

$MobileNumber = $_GET["MobileNumber"];
$TeamGroup = $_GET["TeamGroup"];

if($_REQUEST=['MobileNumber']) {
    $Item = "SELECT a,b,c,d FROM Item WHERE MobileNumber = $MobileNumber";
} elseif($_REQUEST=['TeamGroup']) {
    $Item = "SELECT a,b,c,d FROM Item WHERE TeamGroup = $TeamGroup";
} else {
    $Item = "SELECT a,b,c,d FROM Item";
};

$result = mysql_query($Item) or die ("Error in query: $query. ".mysql_error());

if (mysql_num_rows($result) > 0) {
    $row = mysql_fetch_assoc($result);
    print '<table><tr>';
    foreach($row as $name => $value) {
        print "<th>$name</th>";
    }
    print '</tr>';

    while($row) {
        print '<tr>';
        foreach($row as $value) {
            print "<td>$value</td>";
        }
        print '</tr>';
        $row = mysql_fetch_assoc($result);
    }
    print '</table>';    
} else {
    echo "No Items Assigned";
};

它適用於URL為test.php?MobileNumber=...但不適用於包含TeamGroup或URL中沒有任何內容的情況。 我擁有的網址是這樣的: test.php?TeamGroup=11

編輯:添加了更多的代碼,讓您看到我想要顯示的內容

如果要使用if條件比較某項,則必須像這樣

if(something == true){
  // then do something
}
else{
  //do something
}

查看手冊以了解更多

您要執行的操作在php中不是有效的。您需要更改此設置

if($_REQUEST=['MobileNumber']){

我想你可以這樣嘗試

if(isset($_GET['MobileNumber']) && trim($_GET['MobileNumber'])){

elseif(isset($_GET['TeamGroup']) && trim($_GET['TeamGroup'])){

if($_REQUEST=['MobileNumber']){其語法錯誤

嘗試這個

在您的url ?MobileNumber=Put your mobile num here添加此行url ?MobileNumber=Put your mobile num here 謝謝

比Team group再一次?TeamGroup=put team group here

if($_GET['MobileNumber']==TRUE){
$MobileNumber=$_GET['MobileNumber'];
$Item = "SELECT a,b,c,d FROM Item WHERE MobileNumber = $MobileNumber";
}
elseif($_GET['TeamGroup']==TRUE){
$TeamGroup=$_GET['TeamGroup'];
$Item = "SELECT a,b,c,d FROM Item WHERE TeamGroup = $TeamGroup";
}
else{
    $Item = "SELECT a,b,c,d FROM Item";
    }

這應該工作...

if(isset($_GET['MobileNumber']))  //can also use if(isset($_GET['MobileNumber']) && !empty($_GET['MobileNumber']))
{
    $Item = "SELECT a,b,c,d FROM Item WHERE MobileNumber = ".$MobileNumber;
} 
elseif(isset($_GET['TeamGroup']))
{
    $Item = "SELECT a,b,c,d FROM Item WHERE TeamGroup = ".$TeamGroup";
}
else{
    $Item = "SELECT a,b,c,d FROM Item";
}

這個說法:

if($_REQUEST=['MobileNumber'])

始終為true,因為您正在將['MobileNumber']數組分配給$ _REQUEST全局變量。

如果要檢查是否在$ _REQUEST全局變量中設置了值,請執行以下操作:

if( isset($_REQUEST['MobileNumber']))

您可以嘗試以下方法:

$MobileNumber = $_GET["MobileNumber"];
$TeamGroup    = $_GET["TeamGroup"];

if(isset($_GET["MobileNumber"])) {
    //If you enclose fields/table in `` and values in '' you won't run into quoting issues
    //It's OK to not quote numbers, but you can quote them to stay standard
    $Item = "SELECT `a`, `b`, `c`, `d` FROM `Item` WHERE `MobileNumber` = '$MobileNumber'";
};
if(isset($_GET["TeamGroup"])) {
    $Item = "SELECT `a`, `b`, `c`, `d` FROM `Item` WHERE `TeamGroup` = '$TeamGroup'";
};
if(!isset($_GET["MobileNumber"]) && !isset($_GET["TeamGroup"])) {
    $Item = "SELECT `a`, `b`, `c`, `d` FROM `Item`";
};

//Switch to mysqli_*
$result = mysqli_query($dbLink, $Item) or die ("Error in query: $Item. " . mysqli_error());

if (mysqli_num_rows($result) > 0) {
    $row = mysqli_fetch_assoc($result);
    print '<table><tr>';
    foreach($row as $name => $value) {
        print "<th>$name</th>";
    };
    print '</tr>';

    while($row) {
        print '<tr>';
        foreach($row as $value) {
            print "<td>$value</td>";
        };
        print '</tr>';
        $row = mysqli_fetch_assoc($result);
    };
    print '</table>';    
} else {
    echo "No Items Assigned";
};

  • 從mysql_ *移到mysqli _ *(檢查我的語法-大部分mysqli_ *函數是相同的,但有一些區別)
  • 使用isset和!isset確定要使用的查詢
  • 將查詢字符串用對號和引號引起來,以確保您不會忘記正確地引用一些內容
  • 修復您or die捕獲(您正在引用似乎不存在的$ query)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM