我有一個HTML表單,從一個PHP腳本中提取值,如下圖所示:如何同時處理撇號和雙引號在PHP
$dbc = mysqli_connect("all required info here...") or die("Error occurred");
$sent = "Any sentence here...which may contain apostrophe or double quotes or both";
$query = "SELECT * FROM myrecord WHERE sentence = '$sent'";
$result = mysqli_query($dbc, $query);
$data = mysqli_fetch_array($result);
mysqli_close($dbc);
的問題是,該變量$sent
可以包含任何字符串與的撇號或雙引號或兩者的組合。這會在執行mysqli_query()
時出錯。 所以,即使我逃避的$sent
初始化它仍將爲mysqli_query()
執行等問題雙引號。如果我爲「和」逃脫,那麼$sent
的值不會保留它實際需要的值(儘管我不確定是否轉義'和'將起作用或不起作用)。
是否有任何內置的功能,可自動轉義字符串的所有特殊字符?或解決此問題的任何解決方法?
[P.S.我已經搜查計算器一些以前的問題,一直沒能找到解決的辦法。]你想
這會不會創建'$ pdo-)煩惱>準備('如果字符串包含撇號? – Lincoln
@Lincoln你不需要再使用撇號。 –
@Lincoln:Nope,':sentence'是一個佔位符,它不是查詢的實際部分。它的工作方式是查詢,將佔位符發送到數據庫,在數據庫中進行解析並構建執行計劃,然後在調用'execute'時,將參數值分開發送並放入適當位置,_resulting_ query被執行。結果是,不需要像引號那樣轉義字符,因爲參數和查詢字符串本質上是獨立處理的。另一個好處是,您可以重新使用準備好的語句(我將以示例更新答案) –