2013-11-03 133 views
0

所以現在我有一個ajax調用,它將一個按鈕的ID發送到一個php腳本並返回食物結果。如果我通過使用ItemID和一個int來調用它,它將返回itemID的行。但是,如果我將它更改爲如下所示的ItemName,它不會返回任何行。在CONSOL當我使用ITEMNAME被返回幾乎一無所有,但如果我做之前打印編碼$ ID $ STMT則表明正確的琴絃被傳遞查詢返回的結果爲int而不是字符串

if(isset($_POST['ID'])) 
{ 
$ID = $_POST['ID']; 

$stmt = $mysqli->query("SELECT * FROM group2.menu WHERE ItemName = $ID "); 

if($stmt->num_rows) 
{ 
$row = $stmt->fetch_assoc(); 

echo $row; 
print json_encode($row);  

} 

} 

AJAX如果相關

$('.check').click(function(){ 

var thisID = $(this).attr('id'); 
alert(thisID); 
$.ajax({ 
    type: "POST", 
    crossDomain: true, 
    url: "http://csmaster.sxu.edu/group2/group2/CougarLunch/retrieveColumn.php", 
    data:{ ID: thisID}, 
    cache: false, 
    async:true, 
    datatype: "jsonp", 
    success: function(data) 
    { 
     console.log(data); 
     alert(data); 
     // 
    } 

    }); 
    }); 

的HTML按鈕的首部作品,第二個沒有

  <input type="checkbox" name="value" id="27" class="check">    
      <label for="27">pizza</label> 

      <input type="checkbox" name="value" id="scrambled egg" class="check">    
      <label for="scrambled egg">Scrambled Egg</label> 
+0

您將需要有人將ID與名稱關聯起來。如果它是名稱或ID,則可以將查詢更改爲使用不同的「where」子句。 – Telshin

回答

0

爲itemName一個varchar字段,如果是這樣,你有沒有試過放在引號字符串?

$stmt = $mysqli->query("SELECT * FROM group2.menu WHERE ItemName = '$ID' "); 
+0

我知道這是小東西,最初我嘗試使用雙引號,但它並沒有工作,然後嘗試 $ myText =(字符串)$ myVar; 然後我試着把我的查詢放入單引號,並把$ ID雙引號。 沒有一個工作。你的方法,你會知道爲什麼我的其他方法不起作用。也非常感謝你。 –

+0

根據您的DBMS,變量周圍的雙引號可能被接受也可能不被接受。一般做法是使用單引號進行跨平臺支持。 $ myText =(string)$ myVar會將你的var轉換爲一個字符串,但是你的SQL仍然會有[itemName = Scrambled Egg]的等價物,導致一個錯誤。 'select * from table其中ItemName =「$ ID」'不起作用,因爲外部單引號會阻止PHP插入$ ID變量。最後一種情況下的SQL實際上是在搜索「$ ID」的ItemName(而不是$ ID中保存的字符串)。 – Will

相關問題