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