2016-04-11 192 views
0

我有一種感覺,我犯了一個語法錯誤。除了語法錯誤還有其他什麼,或者忘記定義一個會導致它的變量?PDO/PHP未定義變量

注意:我現在正在收到一個錯誤,指出它期待着一個;上線包含if ($query->execute(array($user_name))) {

if (isset($_GET['username'])){ 
     $user_name = $_GET['user_name']; 
     $dbh = connectDb(); 
     $query = $dbh->prepare("SELECT * FROM users WHERE user_name = ?"); 
     if ($query->execute(array($user_name))) { 
      while ($row = $query->fetch(PDO::FETCH_ASSOC)) { 
       $email = $row['user_email']; 
       $admin = $row['user_access_level']; 
       $dbusername = $row['user_name']; 
      } 
     } 
     if ($user_name != $dbusername) { 
      echo "There has been a fatal error. Please try again."; 
     } 
    } else echo "you need to specify a username!"; 
?> 
    <center><h2><?php echo $dbusername; ?>'s Profile</h2><br /></center> 
    <table width="350" border="3" align="center" cellpadding="0" cellspacing="1" bgcolor="#000000"> 
     <tr><td>Username:</td><td><?php echo $user_name; ?></td></tr> 
     <tr><td>User Level:</td><td><?php echo $userlvl; ?></td></tr> 
     <tr><td>Email:</td><td><?php echo $email; ?></td></tr> 
    </table> 
+0

只是一個側面說明,除非你的'query'在執行查詢之前,數據庫代碼中的方法會清除字符串,您的網站很容易受到SQL注入的影響。 –

+0

'$ dbh-> query(「SELECT * FROM users WHERE user_name = $ user_name」,PDO :: FETCH_ASSOC)'給你一個PDOStatement的實例,而不是一個數組。見http://php.net/manual/en/pdo.query.php – Tekay37

回答

1

試試這個;)

這是一個小錯字問題:

if (isset($_GET['username'])){ 
    $user_name = $_GET['username']; /* here you are using user_name it should be username or both should be user_name */ 
0
$query = $dbh->prepare("SELECT * FROM users WHERE user_name = ?"); 
if ($query->execute(array($user_name))) { 
    while ($row = $query->fetch(PDO::FETCH_ASSOC)) { 
     $email = $row['user_email']; 
    } 
} 

您正在尋找類似的東西。請注意,我在我的iPhone,所以很難代碼,哈哈

+0

@Cyber​​izedNinja我看不到它需要的地方或原因;在那條線上。仔細檢查你的文件中的代碼,並檢查一切看起來是否正確。在保存並上傳到服務器之前,您可能無意中碰到了密鑰 –