2017-01-23 57 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'];