2015-05-05 105 views
0

我試圖創建一個函數,它將返回一個包含查詢結果的所有字段的數組,然後遍歷它並回顯所有內容。這是我迄今爲止所做的。我嘗試了一些類似問題的方法,例如Putting a SQL query in a PHP function,但到目前爲止,我還沒有能夠使其工作。PHP函數從MySQL數據庫中選擇並將結果傳遞給數組

<?php 

    $ID = $_POST['ID']; 

    function query($ID){ 
    $servername = "x.x.x.x"; 
    $username = "xxxxx"; 
    $password = "xxxxx"; 
    $dbname = "xxxxx"; 

    $conn = mysqli_connect($servername, $username, $password, $dbname); 
     if (mysqli_connect_errno()){ 
       echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
           } 

    $query = "SELECT ID, NAME, POSITION, TELEPHONE_NUMBER, EMAIL FROM GROUP WHERE ID = '$ID'"; 
    $result = mysqli_query($conn, $sql); 

    while($row = mysqli_fetch_array($result)){ 
    $resArr[] = $row; 
    } 
    return $resArr; 
    } 

    $person = query(); 
    foreach($person as $post) { 
    echo $post['ID'] . "<br>"; 
    echo $post['NAME'] . "<br>"; 
    echo $post['POSITION'] . "<br>"; 
    echo $post['TELEPHONE_NUMBER'] . "<br>"; 
    echo $post['EMAIL'] . "<br>"; 
    } 
    ?> 
+1

除了你張開開闊[SQL注入攻擊(http://bobby-tables.com)漏洞,究竟什麼是錯的代碼?不起作用不會告訴我們任何事情。如果它有效,你不會在這裏。 –

+2

你用一個參數 - 函數查詢($ ID)'來定義你的函數,但是你不用參數調用它 - '$ person = query();'。您需要執行'$ person = query($ ID);' – Sean

+0

Marc B - 用戶輸入僅限於POST從中獲取數據的頁面上的整數,如果我知道哪裏出了問題,我仍然不會在這裏可能會修復它。 無論如何,謝謝Sean這樣做,並感謝其他人! – John

回答

1

有幾個失誤已經對您的查詢例如$ ID做不能得到翻譯成值正常的ID,所以你必須關閉這樣的查詢,如果ID比

$query = "SELECT ID, NAME, POSITION, TELEPHONE_NUMBER, EMAIL FROM GROUP WHERE ID = ".$ID; 
整數

如果ID是一個varchar或任何非。

$query = "SELECT ID, NAME, POSITION, TELEPHONE_NUMBER, EMAIL FROM GROUP WHERE ID = '".$ID."'"; 

你也通過發佈獲得id,但你沒有將它分配給你調用它的函數。

$person = query(); 

它必須是

 $person = query($ID); 

嘗試這些修復和比發表您的結果返回。

問候

相關問題