2014-02-27 117 views
-2
<?php 
$tid = $_GET['tid']; 
$id = $_SESSION['userid']; 
$sql1 = "SELECT * FROM topics WHERE id='$tid' LIMIT 1"; 
$res1 = mysqli_query($connect, $sql1) or die(mysqli_error($connect)); 
while ($row = mysqli_fetch_array($res1, MYSQLI_ASSOC)) { 
    $title = $row['topic_title']; 
    $creator = $row['topic_creator']; 
} 
$sql = "SELECT * FROM users WHERE id='$creator' LIMIT 1"; 
$user_query = mysqli_query($connect, $sql) or die(mysqli_error($connect)); 
while ($row = mysqli_fetch_array($user_query, MYSQLI_ASSOC)) { 
    $name = $row["first"].$row["last"]; 
} 
echo $name; 
?> 

我對PHP有點新,但是我已經完成了類似這樣的事情,但是這次我收到錯誤消息。這裏的一切工作除了$ name。我檢查了我的SQL表並確保用戶存在,並且有第一個和最後一個區域。我不明白還有什麼可能是錯的。未定義的變量,不確定爲什麼

注意:未定義的變量:在*上線路名**

謝謝。

+0

如果您收到錯誤消息,請告訴我們它是什麼。例如複製/粘貼它。我認爲它是你的$ _GET內容的未定義索引,再加上大開放的[SQL注入攻擊](http://bobby-tables.com)漏洞。 –

+0

是的,我知道它很容易被SQL注入。我將在稍後編輯它以防止出現這種情況,但我會繼續並添加完整的錯誤。謝謝。 –

+0

什麼是確切的錯誤,以及「用戶」表的結構是什麼? – Mike

回答

0

試穿尺寸爲驗證碼:

<?php 
$tid = $_GET['tid']; 
$id = $_SESSION['userid']; 
$tid = mysqli_escape_string($connect, $tid); 
$sql1 = "SELECT * FROM topics WHERE id='{$tid}' LIMIT 1"; 
$res1 = mysqli_query($connect, $sql1) or die(mysqli_error($connect)); 
// Check for rows first. 
if($res1 and mysqli_num_rows($res1)){ 
    // Use if as while is pointless on LIMIT 1 
    if($row = mysqli_fetch_array($res1, MYSQLI_ASSOC)) { 
     $title = $row['topic_title']; 
     $creator = $row['topic_creator']; 

     $creator = mysqli_escape_string($connect, $creator); 
     $sql = "SELECT * FROM users WHERE id='{$creator}' LIMIT 1"; 
     $user_query = mysqli_query($connect, $sql) or die(mysqli_error($connect)); 
     // Check for rows first. 
     if($user_query and mysqli_num_rows($user_query)){ 
      // Use if as while is pointless on LIMIT 1 
      if ($row = mysqli_fetch_array($user_query, MYSQLI_ASSOC)) { 
       $name = $row["first"].$row["last"]; // NO HIT! 
      } 
      echo $name; 
     }else{ 
      echo 'no rows found (query 2).'; 
     } 
    } 
}else{ 
    echo 'no rows found (query 1).'; 
} 
?> 

可變$name是不確定的,因爲沒有達到$name = ...;線。因此,請確保您的查詢實際上返回結果$sql。它必須爲了定義$name

+0

謝謝。我沒有得到任何錯誤,但如果我想使用$以外的名稱呢?例如,我在我的主HTML中有第二個PHP塊。我怎麼能在那裏使用$ name? –

+0

@MichaelBlake你不會!創建功能。 Feed'$ name',如果存在一個函數。像'do_stuff($ name);'。簡單!或者只是'if(isset($ name)){/ *用$ name做東西。 * /}'。我不會選擇第二個,因爲在循環中,一些迭代可能有'$ name',而另一些可能不會。但是如果你不清除重複之間的'$ name',如果創建一次,它將保持存在。 – CodeAngry

+0

好的,謝謝。我感謝您的幫助。 –