2013-11-22 64 views
0

這裏是我的代碼:HTML/PHP/SQL - 查詢與參數

<form action="" method="post"> 
     <fieldset> 
      Date 1: <input type="text" name="date1"> 
      Date 2: <input type="text" name="date2"> 
     </fieldset> 
      <button type="submit" name="Search"> 
    </form> 

    <?php 
    try { 
     $db = new PDO('mysql:host=localhost;dbname=db;charset=utf8', 'user', 'pass'); 
     $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    } catch (Exception $e) { 
     echo "DB is down"; 
     exit; 
    } 

    try { 
     $results = $db->query("SELECT * FROM instructor WHERE date_hired BETWEEN ? AND ?"); 
    } catch (Exception $e) { 
     echo "No data found"; 
     exit; 
    } 

    echo "<pre>"; 
    var_dump($results->fetchAll(PDO::FETCH_ASSOC)); 

    ?> 

我會怎樣改變的PHP代碼使用,我已經創建了帶參數的形式?

我希望能夠進入2個日期,形式,所以它進入查詢,然後將結果輸出。

+1

您標記mysqli的,但你沒有實際使用的mysqli功能。只是爲了讓你知道在哪裏尋找文檔,你正在使用PDO抽象層,並且可以在http://www.php.net/manual/en/class.pdo.php上閱讀它: – aamit915

回答

2

改變這一行:

$results = $db->query("SELECT * FROM instructor WHERE date_hired BETWEEN ? AND ?"); 

$results = $db->prepare("SELECT * FROM instructor WHERE date_hired BETWEEN ? AND ?"); 
$results->execute(array($_POST['date1'], $_POST['date2'])); 

而且,這裏是一個偉大的鏈接,讓你開始:

http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

+0

這是無法比擬的。 – tadman

+0

感謝您的鏈接。一直在尋找這樣的東西。我收到一些錯誤,但我會檢查頁面並返回到此處 – Bob21

1

當執行與佔位符的語句,你必須給出綁定數據:

$sth = $db->prepare("SELECT * FROM ... BETWEEN ? AND ?"); 
$results = $sth->execute(array($start, $end));