如何在PHP中检查mySQL数据库中的字段是否为空

如何在PHP中检查mySQL数据库中的字段是否为空,php,mysql,Php,Mysql,我想知道如何检查特定用户的字段(列)是否为空 我已成功连接到mySQL数据库,输入了一个用户,字段为空。我有一个post表单,允许用户输入信息。根据其他字段是否为空,我希望它们相应地填充。我想使用逻辑来确定字段是否为空。我正在使用以下工具: if($_SERVER['REQUEST_METHOD'] == 'POST') { if(trim($_POST['listing_link']) == '') { } else if(empty($listing_link1))

我想知道如何检查特定用户的字段(列)是否为空

我已成功连接到mySQL数据库,输入了一个用户,字段为空。我有一个post表单,允许用户输入信息。根据其他字段是否为空,我希望它们相应地填充。我想使用逻辑来确定字段是否为空。我正在使用以下工具:

if($_SERVER['REQUEST_METHOD'] == 'POST') {

    if(trim($_POST['listing_link']) == '') {
    }
    else if(empty($listing_link1)) {


        $listing_link1 = $_POST['listing_link'];

        $listing_link1 = mysql_real_escape_string($_POST['listing_link']);

        $query = "UPDATE `users`
              SET `listing_link1`='$listing_link1'
              WHERE `email`='$emailstring'";
    }
    else if(!empty($listing_link1) && empty($listing_link2)) {
        $listing_link2 = $_POST['listing_link'];

        $listing_link2 = mysql_real_escape_string($_POST['listing_link']);

        $query = "UPDATE `users`
        SET `listing_link2`='$listing_link2'
        WHERE `email`='$emailstring'";
    }
    else if(!empty($listing_link2) && empty($listing_link3)) {
        $listing_link3 = $_POST['listing_link'];

        $listing_link3 = mysql_real_escape_string($_POST['listing_link']);

        $query = "UPDATE `users`
        SET `listing_link3`='$listing_link3'
        WHERE `email`='$emailstring'";

    }

    else if(!empty($listing_link3) && empty($listing_link4)) {
        $listing_link4 = $_POST['listing_link'];

        $listing_link4 = mysql_real_escape_string($_POST['listing_link']);

        $query = "UPDATE `users`
        SET `listing_link4`='$listing_link4'
        WHERE `email`='$emailstring'";

    }

    else if(!empty($listing_link4) && empty($listing_link5)) {
        $listing_link5 = $_POST['listing_link'];

        $listing_link5 = mysql_real_escape_string($_POST['listing_link']);

        $query = "UPDATE `users`
        SET `listing_link5`='$listing_link5'
        WHERE `email`='$emailstring'";

    }

    $result = mysql_query($query);


}
?>

此代码检查用户在点击“列表链接”按钮时是否输入了任何内容。如果没有,那么什么也不会发生。如果输入了某个内容,它将进行检查以确定是否有任何其他字段被填充(清单\u link1、清单\u link2……清单\u link5)。$listing_link1-5变量应该包含这些信息

除以下情况外,我无法运行其他IF:

else if(empty($listing_link1)) {

            $listing_link1 = $_POST['listing_link'];

            $listing_link1 = mysql_real_escape_string($_POST['listing_link']);

            $query = "UPDATE `users`
                  SET `listing_link1`='$listing_link1'
                  WHERE `email`='$emailstring'";
通过点击表单的按钮来持续运行代码,只需用新输入的信息替换列表中的链接1变量


也许这里写的逻辑有问题。如果可以的话,请帮忙

在检查是否为空之前,您不会定义
$listing\u link1

else if(empty($listing_link1))
{
        $listing_link1 = $_POST['listing_link'];
把它们翻过来:

$listing_link1 = $_POST['listing_link'];
if(empty($listing_link1))
{

如果我猜对了,这会解决你的问题:

$empty = 0;
for($i=1; $i<=5; $i++){
  $varname = "listinglink$i";
  if(empty($$varname)){
    $empty = $i;
    break;
  }
}

if($empty > 0){
  $update_field = "listinglink{$empty}";
  $update_data = $_POST['listing_link'];
  mysql_query("UPDATE users SET `$update_field`='$update_data' 
               WHERE email='$emailstring'");
}

有趣的技巧:)

您的代码似乎不正确。你有5个链接。如果有人删除并将链接3发送为空,该怎么办。您是将该用户的数据库链接3值更新为空还是忽略该值?你的问题的答案取决于此。货物崇拜编程?将post值复制到变量,然后用post值的转义版本覆盖完全相同的值?是的,这是有缺陷的,我意识到这一点,这就是我寻求帮助的原因。我想能够测试一个字段是否为空,以确定是否用下一个链接填充另一个字段……有没有办法测试数据库中的“字段”是否为空,而不是变量本身?嘿,再见,这个解决方案不会填充除第一个(第一个链接1)之外的任何其他字段。当我给表单新的输入时,它将只替换第一个字段。其他字段都不会更改。
$test = "groovy.";
$varname = "test";
echo $$varname; // eqivalent to "echo $test"