簡體   English   中英

麻煩將php變量傳遞給mysql字符串

[英]trouble passing php variable into mysql string

我一直在嘗試這個問題幾個小時,我知道還有其他類似的主題,但我仍然卡住...基本上我試圖列出所有姓氏以字母A開頭的客戶:

我在URL中傳遞一個名為lname的變量,如下所示:

然后我在PHP中抓取變量,如:

$lname = $_GET['lname'];
$lname = mysql_real_escape_string($lname);

// HERE'S THE PROBLEM AREA:  then I try to put a simple query together like this:

$query = 'SELECT * FROM customers WHERE customers.lname LIKE "$lname%"';

// then I want to make sure $query and $lname have values in them, so I echo them out:

echo $query;
echo ' $lname = '.$lname;

// and the output is:

SELECT * FROM customers WHERE customers.lname LIKE "$lname%" 
$lname = A
Unknown column '$lname' in 'where clause'

所以你可以在查詢中看到,在LIKE之后,它應該說LIKE'A',但它正在解析為LIKE $ lname。 我嘗試了各種各樣的變化,例如:

$ query ='SELECT * FROM customers WHERE customers.lname LIKE“。$ lname。”'; $ query ='SELECT * FROM customers WHERE customers.lname LIKE {$ lname}%'; 等等等

很奇怪,但是列表lname在customers表中肯定存在,所以我不確定為什么它會在'where子句'中報告'Unknown column'$ lname'的錯誤

而對於記錄,當我手動更改查詢以包含我想要的值時,它會完美地輸出客戶名稱列表:

$query = 'SELECT * FROM customers WHERE customers.lname LIKE "A%"';

...所以查詢有效,但我無法插入$ lname。

感謝您的任何幫助。 如何讓我的變量$ lname在我的mysql查詢中傳遞$ lname里面的VALUE?

$ query =“SELECT * FROM customers WHERE customers.lname LIKE'$ lname%'”;

在上面的行中交換單引號和雙引號。

您應該考慮使用參數化查詢。 例如,

$sql = "SELECT * FROM customers WHERE customers.lname LIKE ?";
$stm = $pdo->prepare($sql);
$stm->execute(array($lname));

這將有助於解決您可能遇到的許多問題,並且更加安全。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM