gpt4 book ai didi

php - SQL 查询 'WHERE EXISTS' 如果列返回空

转载 作者:行者123 更新时间:2023-12-01 00:42:04 27 4
gpt4 key购买 nike

我将此 sql 查询用作 PHP 脚本的一部分来获取用户输入(应用于变量 $condition1-$condition4)并将其与 MySQL 数据库进行比较并返回相关结果。

我的问题是并非站点上的所有表单都输出 $condition4 值,因此它并不总是输入到脚本/查询中。

我尝试在 SQL 查询中使用 EXISTS 谓词,但无法使其工作。

这是我的查询:

 $sql = "SELECT columnXYZ
FROM table_1
WHERE condition1 = '" .$condition1."'
and condition2 = '" .$condition2."'
and condition3 = '" .$condition3."'
and condition4 = '".$condition4."'";

我是否需要在运行查询之前确定是否输入了 $condition4,或者有没有办法使用 WHERE EXISTS 谓词来实现这一点?

整个脚本:(var_dump查看查询结果)

<?php
$condition1 = $_POST['condition1'];
$condition2 = $_POST['condition2'];
$condition3 = $_POST['condition3'];
$condition4 = $_POST['condition4'];
$dbhost = 'localhost';
$dbuser = 'admin';
$dbpass = 'pwd';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);

if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
$sql = "SELECT columnXYZ
FROM table_1
WHERE condition1 = '" .$condition1."'
and condition2 = '" .$condition2."'
and condition3 = '" .$condition3."'
and condition4 = '".$condition4."'";

mysql_select_db('database_1');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
$columnXYZ = $row['columnXYZ'];
var_dump($columnXYZ);
}



mysql_close($conn);
?>

当输入 $condition4 时,查询工作正常,作为没有 $condition4 的表单的变通方法,我刚刚指向一个删除了 $condition4 的类似 php 脚本。

澄清我的问题:我可以在 SQL 查询中使用 EXISTS 谓词来确定输入是否有值,还是我需要事先使用 PHP 或其他一些方法来确定?

最佳答案

在将那部分添加到您的 SQL 查询之前,只需检查 $condition4 是否为空()。

$sql = "SELECT columnXYZ
FROM table_1
WHERE condition1 = '" .$condition1."'
and condition2 = '" .$condition2."'
and condition3 = '" .$condition3."'";

if !(empty($condition4)){
$sql .= "' and condition4 = '".$condition4."'";
}

正如 Seth 提到的,如果您要将它放在公共(public)互联网附近的任何地方,请在谷歌上搜索“SQL 注入(inject)”。

关于php - SQL 查询 'WHERE EXISTS' 如果列返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29927892/

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