2017-01-23 78 views
0

我喜歡在輸入字段中填充標準值。
我有這樣的代碼:
PHP表單輸入值不起作用

$stma = $conn->prepare("SELECT * FROM `users` WHERE ID = '".$_GET['gebruiker']."' "); 
$stma->execute(); 
$row_count = $stma->rowCount(); // returns 1 
foreach ($conn->query($stma) as $rows) { 
    $Username = $rows['Username']; 
} 

/// my form 
echo '<form method="POST" > 
    <table> 
    <th colspan="3"><h1>Gebruiker bewerken</h1></th> 
     <tr> 
      <th> 
       <h3>Gebruikersnaam: </h3> 
      </th> 
      <td> 
       <input style="width: 70%;" type="text" READONLY value="'.$Username.'" > 
       // the value must be filled in this input field 
      </td> 
     </tr> 
     <tr> 
      <th> 
       <h3>Wachtwoord: </h3> 
      </th> 
      <td> 
       <input style="width: 70%;" type="password" name="wachtwoord" REQUIRED> 
      </td> 
     </tr> 
     <tr> 
      <th> 
      </th> 
      <td colspan="2"> 
       <input type="submit" name="bewerken" class="button" style="vertical-align:middle" value="Opslaan"> 
      </td> 
     </tr> 
     '.$error.' 
    </table> 
</form>'; 

代碼不會在我從數據庫中得到了價值填補。
我仍然得到一個空的表單字段。
我的查詢返回1個結果行(我查過)
有人看到我的錯誤嗎?
我不認爲我做了錯誤(它必須有我我的錯,它爲我工作的其他形式太)

+1

在你的foreach()裏放一個** print_r($ rows)**並檢查它包含了什麼? –

+0

@MayankPandeyz它沒有顯示任何東西,當我添加print_r(行) –

+0

這就是你在輸入文本兄弟沒有得到任何東西的原因 –

回答

1

,以確保它輸出所有錯誤和警告(調試),這可能幫助:

ini_set('display_errors', 1); 
ini_set('display_startup_errors', 1); 
error_reporting(E_ALL); 

將上述代碼放在文件頂部。 而且您可能還想要阻止任何SQL注入:

$stma = $conn->prepare("SELECT * FROM `users` WHERE ID = ? "); 
$stma->bindParam(1, $_GET['gebruiker'], PDO::PARAM_INT); 
$stma->execute(); 
$stma->debugDumpParams(); // you could use this to check whether or not all parameters are set correctly 
$row_count = $stma->rowCount(); // returns 1 
foreach ($conn->query($stma) as $rows) { 
    $Username = $rows['Username']; 
} 
+0

謝謝,它工作 –

+0

不客氣!很高興幫助。 –

1

下面是一個工作示例。

PHP

try { 
     $conn = new PDO('mysql:host=localhost;dbname=YourDBname', 'root', ''); 
    } catch (PDOException $e) { 
     echo $e->getMessage(); 
    } 

    $id = $_GET['gebruiker']; 

    $sql = "SELECT * FROM `users` WHERE id = :id"; 
    $stm = $conn->prepare($sql); 

    $stm->execute(['id'=>$id]); 

    $user = $stm->fetchObject(); 

    $username = $user->username; 

HTML

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Test</title> 
</head> 
<body> 
    <form action="POST"> 
     <input type="text" value="<?php echo (isset($username)) ? $username : 'No value' ; ?>"> 
    </form> 
</body> 
</html> 

如果從您的網址您所設定的gebruiker,那麼你就必須做到這一點,如:?script.php的gebruiker = 1您可以更換1與您的表中存在的任何ID值。

+0

如果ID是用戶表中的主鍵,那麼您不需要foreach,因爲您的查詢將始終從您的用戶表中返回1個值。 – ultrasamad

-1
please try this code 
$stma = $conn->prepare("SELECT * FROM `users` WHERE ID = '".$_GET['gebruiker']."' "); 

$stma->execute(); 

$row_count = $stma->rowCount(); // returns 1 

foreach ($conn->query($stma) as $rows) { 
    $Username = $rows['Username']; 
} 

**please replace this code** 
$res = $conn->query("SELECT * FROM users WHERE ID = '".$_GET['gebruiker']."' "); 

$allRows = $res->fetch_assoc(); 

$Username = $allRows['UserName'];