2011-10-24 93 views
0

我已經試過這100種,並找遍了整個網:PHP語法麻煩

<?php 
$dbname = 'pdartist2'; 
$table = 'subcategories'; 
// query 

$result = mysql_query('SELECT SubHeaderText FROM subcategories where SCID = $SCID'); 

while($row = mysql_fetch_row($result)) 
{ 
    foreach($row as $cell) 
     "$cell"; 
} 
mysql_free_result($result); 
?> 

我試圖傳遞參數$ SCID這是一個數字,但我不能得到的語法。如果我在其中放入一個數字的話。但我需要能夠傳遞一個變量。

+2

使用'「'而不是''' – prodigitalson

+0

只是一個觀察,但什麼是'‘$細胞’;?'線做輸出的電池,你可以把它放到'回聲$細胞;'因爲它會工作更好。 – Nexerus

+0

@Nexerus ......,你知道,解析... – DaveRandom

回答

0

兩個給出關於改變單引號以雙引號的答案是正確的,但是我發現來完成你正在做的事情最好的辦法是使用單引號的SQL,然後只需追加變量到字符串,例如:

$result = mysql_query('SELECT SubHeaderText FROM subcategories where SCID = ' . $SCID); 

// Or 

$result = mysql_query('SELECT SubHeaderText FROM subcategories where SCID = ' . $SCID . ' AND someCol = ' . $someValue); 

而且尼克Q.在評論中提到,你應該預習的變量進入SQL這樣你就不會結束的SQL注入攻擊的目標。我的建議是學習PDO,在那裏你可以準備你的語句然後綁定值。

2

使用PHP單引號不允許變量經之地。讓您的查詢行如下:

$result = mysql_query("SELECT SubHeaderText FROM subcategories where SCID = $SCID"); 
+2

這也是值得注意的是,如果$ SCID是用戶輸入你應該逃避它。 –

+0

對不起尼克,但我不知道是什麼轉義意味着: –

+0

轉義意味着對你使用的數據進行清理(當傳遞給MySQL時,你需要避免使用引號,分號等,因爲它們可以被MySQL解釋爲一些特殊的東西,如果你不知道轉義是什麼,推薦閱讀本:http://terrychay.com/article/php-advent-security-filter-input-escape-output.shtml –

1

您需要在整個查詢周圍使用雙引號。我還添加了錯誤檢查,因爲這是要檢查它的工作如預期

$result = mysql_query("SELECT SubHeaderText FROM subcategories where SCID = '$SCID' ") or die(mysql_error()); 
+0

感謝碰撞箱,修好了! –

0

的問題是,你用你的周圍查詢單引號和PHP不會解釋單引號的變量是非常有用的,僅用雙引號。所以你可以用兩種方式來編寫你的查詢。

$result = mysql_query("SELECT SubHeaderText FROM subcategories where SCID = $SCID") 

OR

$result = mysql_query('SELECT SubHeaderText FROM subcategories where SCID = '.$SCID) 

使用雙引號方法可以看起來更乾淨,但我個人比較喜歡使用單引號與串聯,所以我的編輯器將突出,我使用一個變量出現。