2013-09-16 39 views
0

我在使用時遇到了一個錯誤 - 我認爲這是mysql_fetch_assoc問題。如何在兩個字段中使用WHERE和AND?

<?php 
$buildingNames = $_POST['buildingName']; 
$roomId = $_POST['roomId']; 

$sql = mysql_query("SELECT * 
         FROM forestcourt 
        WHERE buildingName=$buildingNames AND 
          id=$roomId"); 

$id2 = 'id'; 
$buildingName = 'buildingName'; 
$subBuildings = 'subBuildings'; 
$imagePath = 'imagePath'; 
$description = 'description'; 

$rows2 = mysql_fetch_assoc($sql); 
echo 'Name: ' . $rows2[$buildingName] . '<br/>' . 'Room Number: ' . $rows2[$id2] 
    . '<br/>' . 'Sub Buildings: ' . $rows2[$subBuildings] . '<br/>' 
    . 'Description: ' . $rows2[$description] . '<br/>' . 'Location: ' 
    . '<img src="../' . $rows2[$imagePath] . '"/>' . '<br/><br/>'; 
?> 

上面的代碼是我用來從這個頁面之前的頁面獲取表單數據;

<Form name ="form1" Method ="POST" Action ="result.php"> 

     Building Name: <INPUT TYPE = "TEXT" Name ="buildingName"> 
     Room Number: <INPUT TYPE = "TEXT" Name ="roomId"> 
     <INPUT TYPE = "Submit" Name = "Submit" VALUE = "Go"> 

    </FORM> 

什麼網站是爲了做的是從形式使用$ _ POST,並將其發送到使用表單的動作屬性results.php頁面。

但是,它運行時出現錯誤說:

警告:mysql_fetch_assoc():提供的參數不是在 /websites/123reg/LinuxPackage23/ed/ge/_g/xxx.co.uk/public_html/testing/result.php一個有效的MySQL 結果資源 on line 52

line 52 is;

$rows2 = mysql_fetch_assoc($sql); 

它是指;

$sql = mysql_query("SELECT * 
         FROM forestcourt 
        WHERE buildingName=$buildingNames AND 
          id=$roomId"); 

因此,我認爲我的SELECT語句有問題嗎?

我很新的SQL,所以我看不出有什麼問題。

數據庫已連接並從表中獲得結果。 字段的名稱也是正確的。

如果任何人都可以指出任何事情或幫助,那將是偉大的。

+0

您的代碼容易受到SQL注入。 – nickb

+0

@Prix - 看起來你在這裏過度編輯過。第一行是神祕的。 –

+0

@ PM77-1在您的瀏覽器上使用utf-8。我沒有看到任何問題,除了空格和換行符以及標題外,我沒有改變任何內容。 – Prix

回答

1

各地使用WHERE buildingName='$buildingNames' AND id='$roomId'

而且單引號,以避免SQL注入使用

buildingName='" . 
mysql_real_escape_string($buildingNames) . "' AND id='" . 
mysql_real_escape_string($roomId) . "'" 
+0

謝謝我會確保我會使用/看看這個! –

+0

使用單引號修復了整個事情!感謝您的幫助,@ user1502952 –

相關問題