2015-07-21 121 views
0

我想通過使用以下Prepared Statement從MySQL數據庫獲取一些數據。但我有兩個Problwms這裏:使用MySQLi Prepared Statement獲取行的問題

1的代碼只返回最後一行值,但你可以看到我使用與$stmt->fetch()的同時,迭代器在

while($stmt->fetch());{ 
    echo '<option value="'.$uid.'">'.$name.'</option>'; 
} 

2 - 另一件事是,當我嘗試使用代碼段2中的if($stmt->num_rows > 0){}我收到Cant'查找數據消息!

<?php 
    $conn = new mysqli('localhost', 'root', '', 'dbmodel'); 
    if ($conn->connect_error) { 
     die("Connection Failed: " . $conn->connect_error); 
    } 
    $sql = 'SELECT uid, name FROM `single-animals-tbl`'; 
    $stmt = $conn->prepare($sql); 
    $stmt->execute(); 
    $stmt->bind_result($uid,$name); 
?> 
<select> 
    <option value="0">Select From The List</option> 
    <?php 
     while($stmt->fetch());{ 
      echo '<option value="'.$uid.'">'.$name.'</option>'; 
     } 
     $stmt->close(); 
     $conn->close(); 
    ?> 
</select> 

片段2 if($stmt->num_rows > 0){}

<?php 
    $conn = new mysqli('localhost', 'root', '', 'dbmodel'); 
    if ($conn->connect_error) { 
     die("Connection Failed: " . $conn->connect_error); 
    } 
    $sql = 'SELECT uid, name FROM `single-animals-tbl`'; 
    $stmt = $conn->prepare($sql); 
    $stmt->execute(); 
    $stmt->bind_result($uid,$name); 
    if($stmt->num_rows > 0){ 
    ?> 
     <select> 
      <option value="0">Select From The List</option> 
      <?php 
       while($stmt->fetch());{ 
        echo '<option value="'.$uid.'">'.$name.'</option>'; 
       } 
       }else { 
        echo "Cant' Find Data"; 
       } 
       $stmt->close(); 
       $conn->close(); 
      ?> 
     </select> 
+0

爲什麼不使用PDO? –

+1

如果numrows說沒有行,那麼你的查詢沒有返回行...你是否嘗試過直接在mysql shell中運行該查詢?這或查詢失敗了,因爲你沒有檢查錯誤,你只是盲目地認爲它成功了。 –

+0

@Marc B,感謝評論,還有是絕對錶中的行加上我witdout使用if語句我得到最後一行說 – Suffii

回答

0

嘗試使用get_result代替bind_resultmysqli_fetch_assoc代替

附:繼續這將需要mysqlnd來安裝

1

至於你的第一個問題: 你的while循環後有一個僞造的分號。因此,它是相當於

while($stmt->fetch()) 
{ 
    ; 
} 
{ 
    echo '<option value="'.$uid.'">'.$name.'</option>'; 
} 

刪除,它應該工作

+0

Thnaks Mathias Becher,多麼愚蠢的錯誤!但第二部分怎麼樣? – Suffii

+0

@Suffii不會解決這兩個問題嗎? – Scott

+0

第一部分耶,但對於第二部分沒有,但是我找到一個解決方案,在使用if($ stmt-> num_rows> 0){}之前添加'$ stmt-> store_result();'但我不能'弄清楚它是如何相關的! – Suffii

相關問題