2016-12-26 63 views
-1

嗨,大家好,我試圖表現出對網頁的結果通過PHP選項搜索我的代碼如下PHP搜索

<?php 
include 'db.php'; 
$tbl_name="socio"; 
if(isset($_POST['search'])){ 
    $input = $_GET['stYear']; 
    $sql = "SELECT * FROM socio where year='$input'"; 
    $res = mysqli_query($con, $sql) or die($sql); 
    while($row = mysqli_fetch_array($res)) 
    { 
    echo $row['socio']; 
    } 
    mysqli_close($con); 
} 
?> 

錯誤

注意:未定義指數:stYear在C:\ Apache24 \ htdocs on line 9

+1

'$ _GET'或'$ _POST'?你也開放SQL注入。此外,如果您只需要「社會」列,則只應選擇該列。 – chris85

+0

[:「注意:未定義變量」和「通知:未定義的索引」 PHP]的可能的複製(http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice-undefined-index) – chris85

+0

嗨我不知道在哪裏使用$ _GET或$ _POST變量也socio是表 – Krish

回答

0

您尚未驗證您的輸入。因此,這個問題。 驗證和消毒!

<?php 
include 'db.php'; 
if(isset($_POST['search'])) { 
    $_POST['stYear'] = array_key_exists('stYear', $_POST) ? mysqli_real_escape_string($con, $_POST['stYear']) : null; 
    if (empty($_POST['stYear'])) { 
     exit('Invalid year given'); 
    } 
    $sql = "SELECT * FROM socio WHERE year ='$input'"; 
    $res = mysqli_query($con, $sql) or die($sql); 
    while ($row = mysqli_fetch_array($res)) { 
     echo 'You selected '.$input; 
    } 
    mysqli_close($con); 
} 

另外,如果你只打算使用你已經在你的形式提供這些年來,你可以通過添加白名單in_array($_POST['stYear'], ['2014-15', '2015-16', '2016-17', '2017-18', '2018-19'])他們。 以下示例:

<?php 
include 'db.php'; 
if(isset($_POST['search'])) { 
    $_POST['stYear'] = array_key_exists('stYear', $_POST) && in_array($_POST['stYear'], ['2014-15', '2015-16', '2016-17', '2017-18', '2018-19']) ? $_POST['stYear'] : null; 
    if (empty($_POST['stYear'])) { 
     exit('Invalid year given'); 
    } 
    $sql = "SELECT * FROM socio WHERE year ='$input'"; 
    $res = mysqli_query($con, $sql) or die($sql); 
    while ($row = mysqli_fetch_array($res)) { 
     echo 'You selected '.$input; 
    } 
    mysqli_close($con); 
} 
+0

您好我加入您的驗證,但它說的,我把我的整個代碼在這裏,供大家參考 – Krish

+0

的方式給出無效的年份包括「db.php中」; $ tbl_name =「socio」; (isset($ _ POST ['search'])){ $ input = $ _POST ['stYear']; 如果(isset($ _ POST [ '搜索'])){ $ _POST [ 'stYear'] = array_key_exists( 'stYear',$ _ POST)&& ctype_digit($ _ POST [ 'stYear'])? $ _POST ['stYear']:null;如果(空($ _ POST ['stYear'])){ exit('Invalid year given'); } $ sql =「SELECT * FROM socio WHERE year ='$ input'」; $ res = mysqli_query($ con,$ sql)或死($ sql); 而($行= mysqli_fetch_array($ RES)) { \t回聲 「您已選擇」 $輸入。 } mysqli_close($ con); } } – Krish

+0

<選擇name =」 stYear」類= 「形式控制」> \t \t \t \t \t \t \t \t \t \t <選項值= 「2014-15」> 2014-15 \t \t \t \t \t \t \t \t \t \t <選項值= 「2015-16」 類= 「活性」> 2015-16 \t \t \t \t \t \t \t \t \t \t <選項值= 「2016-17」> 2016-17 \t \t \t \t \t \t \t \t \t \t <選項值= 「2017 - 18」> 2017 - 18 \t \t \t \t \t \t \t \t \t \t <選項值= 「2018-19」> 2018-19 \t \t \t \t \t \t \t \t \t<按鈕類型= 「提交」 名稱= 「搜索」 類= 「BTN BTN-成功」>搜索 \t \t \t \t \t \t \t
Krish