为了账号安全,请及时绑定邮箱和手机立即绑定

使用用户文本输入搜索数据库时 PHP 'mysqli_query' 出现问题

使用用户文本输入搜索数据库时 PHP 'mysqli_query' 出现问题

PHP
白猪掌柜的 2021-07-01 18:00:07
我正在尝试根据文本输入将数据库查询为 SELECT。如果我手动输入字符串,它会正确查询并返回预期的行。但是,如果我使用存储字符串的变量,它将不会从我的数据库中返回任何行。有人可以看看这个代码并分享关于这个问题的任何想法吗?我很抱歉,但我是 PHP 新手,我只是想获得一个简单的评论表以正确显示。我有一个搜索输入,用户在其中输入以下格式的搜索:“姓名、地址、城市、州”。我使用explode() 函数将输入拆分为每个组件并命名每个$name、$address、$city、$state。我包括了一切停止工作的代码。$searchWords = explode(",", $text);$address = $searchWords[1];$name = $searchWords[0];$city = $searchWords[2];$state = $searchWords[3];当我在每个变量上回显 gettype() 时,结果是 'string' 并且预期的字符串会打印到屏幕上。这是我遇到问题的代码:$display = mysqli_query($conn, "SELECT * FROM reviews WHERE address1 LIKE '%$address%'");如果我手动设置 $address = '123 Pokemon St' 或任何字符串,然后在查询中使用 $address,它可以正常工作。但是,如果我在最初定义它之后尝试按原样使用 $address,它将不起作用。我尝试将每个值类型转换为字符串,但这不起作用。我知道我可以在 PHP 文档的某处找到此信息,但我已经花了几个小时搜索它但无济于事。我今天需要完成我的项目,所以非常感谢任何帮助:)
查看完整描述

1 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

我认为你的问题是空格。因为格式是


name, address, city, state


这将导致这些值


// example of $text = "Donnie, Pokemon Street, Denver, Colorado"

$searchWords = explode(",", $text);

$address = $searchWords[1] // "Donnie";

$name = $searchWords[0]; // " Pokemon Street"

$city = $searchWords[2]; // " Denver"

$state = $searchWords[3]; // " Colorado"

您可以尝试在将分解的值传递给查询之前对其进行修剪吗?


$address = trim($searchWords[1]); // "Donnie"

$name = trim($searchWords[0]); // "Pokemon Street"

$city = trim($searchWords[2]); // "Denver"

$state = trim($searchWords[3]); // "Colorado"

希望这可以帮助!


查看完整回答
反对 回复 2021-07-02
  • 1 回答
  • 0 关注
  • 164 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信