如何在 SQL Where 子句中使用多个 And 条件

我正在制作一个动态网站,人们可以在其中搜索捐助者。我正在使用 php 和 mysqli 构建我的搜索页面。我使用 SQL where 子句来获取输入。


Select customusername, phonenumber

FROM users

WHERE country = ‘$country’ AND bgroup = ‘$bggroup’

  AND state = ‘$state’ AND district = ‘$district’

这些值是从表单中正确获取的,我用另一个子句对其进行了验证。


但我无法从数据库中获取任何内容,并且引发了致命错误。并显示错误的查询。我的所有服务器连接都良好并且正确连接到数据库和表。我知道 php 代码在 github 中不起作用,为您提供我上传的源代码请检查我的代码 https://github.com/iblood/iblood.github.io/blob/master/demo.php 请观察其中的任何错误,请解决我的问题我有自己的托管,所以我提供了上面的代码我是这个领域的新手,堆栈溢出你们中的任何一个人都可以帮助我解决这个问题。


哈士奇WWW
浏览 121回答 1
1回答

回首忆惘然

$sql = "Select      `customusername`,     `phonenumber`FROM `users`WHERE      `country` = '".mysqli_real_escape_string($connection, $country)."'      AND `bgroup` = '".mysqli_real_escape_string($connection, $bggroup)."'      AND `state` = '".mysqli_real_escape_string($connection, $state)."'     AND `district` = '".mysqli_real_escape_string($connection, $disctrict)."'";尝试这种方式,字段是输入或下拉菜单,如果它们是输入,您将如何确保用户输入有效信息?编辑:试试这个,它没有经过测试,但应该可以工作。if (isset($sqcountry) && mb_strlen($sqcountry)) {    $search[] = " `country` = '".mysqli_real_escape_string($searchconn, $sqcountry)."'";}if (isset($sqbgroup) && mb_strlen($sqbgroup)) {    $search[] = " `bgroup` = '".mysqli_real_escape_string($searchconn, $sqbgroup)."'";}if (isset($sqstate) && mb_strlen($sqstate)) {    $search[] = " `sqstate` = '".mysqli_real_escape_string($searchconn, $sqstate)."'";}if (isset($sqdistrict) && mb_strlen($sqdistrict)) {    $search[] = " `district` = '".mysqli_real_escape_string($searchconn, $sqdistrict)."'";}$where = '';if (count($search)) {    foreach($search as $value) {        if (!mb_strlen($where)) {            $where .= 'WHERE ' . $value;            continue;        }        $where .= ' AND ' . $value;    }}$sql = "SELECT             customusername,            phonenumber        FROM donors        ".$where."        LIMIT ${offset}, ${total_no_of_pages}";$searchresult = mysqli_query($searchconn, $sql);
打开App,查看更多内容
随时随地看视频慕课网APP