2013-10-22 37 views
0

在經過幾小時的各種腳本示例並試用幾乎所有的東西之後,我發現在尋找答案時這是遠程可以理解的,我再一次處於更智能的擺佈之中。我想要做的就是從用戶的數據庫表中返回一個名稱。這太難了,對我來說似乎是YEP。有人請直接給我。 我已經排序了所有的錯誤,現在我什麼都沒有了,我想呢,問題是在返回結果語句中。這裏是我的代碼:不能從預準備聲明中返回結果

<?php 
//connect to database 
$mysqli = new mysqli('localhost', 'fiona', 'imB04', 'Org_db'); 

// check connection 
    if (mysqli_connect_errno()) { 
     echo "Connect failed: " . mysqli_connect_errno(); exit(); 
    } 

//Prepared statement, bind and execute 
    if (!$stmt = $mysqli->prepare("SELECT `name` FROM users WHERE name = ?")) { 
    echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error; 
} 
//bind parametres 
if (!$stmt->bind_param("i", $name)) { 
    echo "Binding param failed: (" . $stmt->errno . ") " . $stmt->error; 
//execute query or return error 
} 
if (!$stmt->execute()) { 
    echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error; 
} 
//bind result variable 
if (!$stmt->bind_result($name)) { 
    echo "bind result failed: (" . $stmt->errno . ") " . $stmt->error; 
} 
    if ($result = $mysqli->prepare("SELECT `name` FROM users WHERE name = ?")) { 
while ($row = $result->fetch_array()) 
{ 
echo $result['name']; 
} 
    } 

//Close statement 
     $stmt -> close(); 
//Close connection 
    $mysqli -> close(); 

?> 
+0

嗯,你爲什麼不擺脫這個混亂,並嘗試從非常**手冊頁* *清潔*例如** –

+0

我使用手冊的例子是名稱=(NULL)顯然我只是不能正確地得到它 – user2042111

+0

無論如何,你需要嘗試手動的例子。僅僅因爲你目前的表現非常不一致。爲什麼你運行查詢*兩次*? –

回答

-1

試試這個代碼,但我認爲你已經在你的錯誤檢查的頂部。我可以添加一個其他選項來檢查失敗。將$ db更改爲您的數據庫被調用的任何地方。

$query = "SELECT `name` FROM `users` WHERE `name`=?"; 
    $stmt = $db->prepare($query); 
    $stmt->bind_param('s',$name); 
    $stmt->execute(); 
    $stmt->bind_result($name); 

    if($stmt->fetch()) 
    { 
     echo $name; 
    } 
    $stmt->close(); 

而且用於搜索的名字,我會用這個

<snip> 
"WHERE CONCAT(`firstname`, ' ',`lastname`) LIKE CONCAT('%', ?, '%')"; 
$stmt->bind_param('s',$name); 
<snip> 

這是尋找一個姓氏和名字的例子。如果你使用concat,那麼他們是否只有名字的一部分或者是否有名字或姓氏並不重要。