2014-11-08 127 views
0

SQL newb在這裏...從SQL變量的變量中讀取字符串

$db_result = mysql_query("SELECT first_name FROM gamers WHERE comp_id = 'myid'");以我想要的方式工作。

$compid1 = 'myid'; 
$db_result = mysql_query("SELECT first_name FROM gamers WHERE comp_id = @compid1"); 

不會產生相同的結果。

我也試過$compid1和各種其他的東西,但沒有成功。

對不起,這個簡單的問題,但答案仍然是我無法迴避。謝謝!

更新:哦,是啊......這個問題。我如何使用預存變量來執行我的WHERE檢查?

+1

沒有也不會工作,一個MySQL變量(開頭爲'@')不自動將具有相同名稱的PHP變量鏈接 – 2014-11-08 20:22:32

回答

2

您需要在變量前使用$,而不是@。你需要把周圍的引號,因爲它是一個字符串:

$db_result = mysql_query("SELECT first_name FROM gamers WHERE comp_id = '$compid1'"); 

然而,這將是最好的,如果你停止使用mysql擴展。使用PDO或mysqli,並使用帶有參數的預準備語句。例如。在PDO中,它將是:

$stmt = $conn->prepare("SELECT first_name FROM gamers WHERE comp_id = :compid"); 
$stmt->bindParam(':compid', $compid1); 
$stmt->execute(); 
+0

的感謝!如果我運行PDO版本,我將如何獲取$ db_result? – Evorlor 2014-11-08 20:28:32

+2

使用'$ stmt-> fetch()'來獲得結果。這些都在PDO文檔中。 – Barmar 2014-11-08 20:32:13

1

將字符串變量包含在一對引號內。

$compid1 = 'myid'; 
$db_result = mysql_query("SELECT first_name FROM gamers WHERE comp_id = '$compid1'"); 
+0

謝謝!如果我還有額外的話,我也會給你一個綠色的複選標記,但是Barmar擊敗了它。 – Evorlor 2014-11-08 20:28:57

+0

很好。一個upvote對我來說就足夠了:) – cuSK 2014-11-08 20:39:42