簡體   English   中英

mysql語句出錯

[英]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.

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