2016-07-14 199 views
0

所以我有一個非常簡單的函數,它可以針對具有其他憑證的用戶的MySQL數據庫運行。我已經寫了幾個其他功能,按照預期運行類似的查詢。但是,目前每次我運行一個查詢對我的數據庫我得到空結果。我已經採取了查詢本身,並直接運行它(phpmyadmin),並能夠檢索所需的結果。爲什麼我會得到空結果?

function getName($user){ 
    $con = mysqli_connect('localhost','*****','*****','*****'); 
    if(mysqli_connect_error()){ 
     echo 'Failed to Connect: '. mysqli_connect_error(); 
     die(); 
    } 
    $stmt = $con->prepare('SELECT firstName,lastName FROM users WHERE user=? LIMIT 1'); 
    $stmt->bind_param('s',$user); 
    $stmt->execute(); 
    $stmt -> bind_result($fname,$lname); 


    $stmt->fetch(); 

    $lArr = str_split($lname); 
    $canName = $fname . ' ' . $lArr[0].'.'; 
    return $canName; 
} 

我試過了,沒有限制,以防萬一。 var_dump總是顯示爲空。有誰知道爲什麼會發生?

+1

問顯而易見的,你有沒有嘗試運行對你的MySQL實例的原始查詢,你得到任何記錄回來? –

+0

是的,我有,是的,我得到了我正在尋找的結果。 – Hans

+1

您忘記了' - >從結果集中獲取()'任何結果,只是將它們綁定到變量是不夠的 – RiggsFolly

回答

1

你忘了->fetch()從結果集的任何結果,只需將它們綁定變量是不夠的

function getName($user){ 
    $con = mysqli_connect('localhost','*****','*****','*****'); 
    if(mysqli_connect_error()){ 
     echo 'Failed to Connect: '. mysqli_connect_error(); 
     die(); 
    } 
    $stmt = $con->prepare('SELECT firstName,lastName FROM users WHERE user=? LIMIT 1'); 
    $stmt->bind_param('s',$user); 
    $stmt->execute(); 
    $stmt -> bind_result($fname,$lname); 

    // now fetch data into the bound variables 
    $stmt->fetch(); 

    $lArr = str_split($lname); 
    $canName = $fname . ' ' . $lArr[0].'.'; 
    return $canName; 
} 
+0

所以我標記fetch()作爲答案。然而,雖然我發現我確實需要使用fetch(),但我還發現我不得不使用雙引號而不是單引號。如果提取仍然爲空,並且雙引號能夠返回我所需要的內容。一如既往,感謝大家的幫助。 – Hans

+0

雙引號需要在哪裏? – RiggsFolly

+0

哦,你沒有把這個標記爲答案?但是沒關係 – RiggsFolly

-1

執行查詢,但你不拾取結果(如RiggsFolly說的話)。你喊使用取使用fetchall的()()

http://php.net/manual/en/pdostatement.fetchall.php http://php.net/manual/en/pdostatement.fetch.php

+0

對不起米沙,但這不是一個答案**它的評論,還有一個已經發布,已發佈的答案。你幾乎有足夠的代表發表評論,所以不要冒險讓選票無法回答問題 – RiggsFolly

+0

另外,他正在使用'mysqli_',因此鏈接到PDO方法並不是非常有用! – RiggsFolly

相關問題