[英]Error with mysql statement
我試圖讓我的MySql查詢失明我在這里noob,我想在我的查詢中阻止SQL注入。 這是我的陳述,但有一個錯誤
$sql = $conn ->prepare("SELECT * FROM Personas WHERE concat(nombre1,' ',apellido1) LIKE '% :name %'");
$sql-> bind_param('name', $q);
警告:mysqli_stmt :: bind_param():變量數與預准備語句中的參數數量不匹配
這項工作很好,但這是一個糟糕的方式
$sql="SELECT * FROM Personas WHERE concat(nombre1,' ',apellido1) LIKE '%".$q."%';
請幫助我以及其他方式我可以用來保護我的PHP代碼中的查詢
謝謝大家,這是我的解決方案
$sql = $conn ->prepare('SELECT * FROM Personas WHERE concat(nombre1," ",apellido1) LIKE ? ');
$key = "%".$q."%";
$sql-> bind_param('s', $key);
以這種方式使用bind_param:
$sql= $conn->prepare("SELECT * FROM Personas WHERE concat(nombre1,' ',apellido1) LIKE :name");
$q= "%$q%";
$sql->bindParam(':name', $q);
$sql->execute();
mysql文檔使用問號(?)來指示應該放置后續bind_param值的位置。 嘗試用“?”替換“:name” 在查詢中,你的bind_param應遵循語法bind_param(“s”,$ q),其中“s”是一個字符串,用於標識綁定值的類型:s表示字符串,d表示小數,i表示整數,等等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.