gpt4 book ai didi

php - 仅在为空时获取结果

转载 作者:行者123 更新时间:2023-12-03 08:30:47 25 4
gpt4 key购买 nike

我有这个从客户表返回行的 sql 语句。用户可以选择搜索他们想要输入的任何内容。我有这个工作,直到我尝试通过使用 bindValue 来防止 sql 注入(inject)。现在,除非用户将文本框留空,否则我无法返回任何结果。下面是我的代码。

型号

function searchMyCusts($field, $query){          
$data = null;
$msg = null;
$status = null;

$sth = $this->db->prepare("SELECT ".CustomerFields::ID.",".CustomerFields::FirstName.",".CustomerFields::LastName.",".CustomerFields::PhoneNumber." FROM ".CustomerFields::TableName." WHERE '$field' LIKE :query");

$sth->bindValue(':query', $query);

if ($sth->execute()){
$status = "success";
$msg = "Customer entry successfully altered";
$data = $this->smartFetchAll($sth);


}else{
$status = "error";
$msg = "An error occurred. :".$sth->errorInfo()[2];
}

$jsonData = json_encode($this->buildResponseArray($status, $msg, $data));
return $jsonData;
}

在最后的准备行中,我有传入的值。就像我说的那样,这一直有效,直到我尝试绑定(bind)查询变量。

我将不胜感激您可能有的任何见解。提前致谢!

问候

最佳答案

我不知道它以前如何工作,但首先你需要改变

" WHERE '$field' LIKE :query"


" WHERE $field LIKE :query"

或者
" WHERE `$field` LIKE :query"

您不能在列名周围使用引号,因为它只是一个与 :query 进行比较的文字字符串。图案。查询将起作用,但您不会返回任何行。要么什么都没有,要么倒勾。

其次 $query在准备之前应该包含所有必要的通配符。例如。
$query = "%new%";

目前尚不清楚您的代码是否是这种情况

关于php - 仅在为空时获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16501332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com