Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查查询字符串是否为空的替代方法_Php_Forms - Fatal编程技术网

Php 检查查询字符串是否为空的替代方法

Php 检查查询字符串是否为空的替代方法,php,forms,Php,Forms,我只是想知道是否有更好的方法来检查空字符串,这个方法可以工作,但在第一次加载表单时会显示错误(因为查询是空的) 很简单,在这里检查一下 $order = "INSERT INTO sbh_itemsheet (shopCode, itemNumber, itemDescription) VALUES ('$shopCode','$itemNumber','$itemDescription')"; $result = mysql_query($order); //order exe

我只是想知道是否有更好的方法来检查空字符串,这个方法可以工作,但在第一次加载表单时会显示错误(因为查询是空的)

很简单,在这里检查一下

$order = "INSERT INTO sbh_itemsheet
   (shopCode, itemNumber, itemDescription)
  VALUES
('$shopCode','$itemNumber','$itemDescription')";


 $result = mysql_query($order); //order executes

 if($result)
{
 echo("
 Input data is succeed");
}
else
{
 echo("
 Input data is fail");
}

我不知道如何消除第一条错误消息,实际上我应该从脚本开始检查,而不是从底部开始检查,但是我的大脑今天停止工作了,我想你们中的一些可爱的人可能会提供帮助。

在处理查询之前,您需要检查变量是否存在

$result = false;
if($shopCode !="" && $itemNumber !="" && $itemDescription !="")
{
    $order = "INSERT INTO sbh_itemsheet
    (shopCode, itemNumber, itemDescription)
    VALUES
    ('$shopCode','$itemNumber','$itemDescription')";

    $result = mysql_query($order); //order executes

    if($result)
    {
        echo("Input data is succeed");
    }
    else
    {
        echo("Input data is fail");
    }
}

我上面的例子回答了你的问题。但是,我会考虑从
mysql
移动到
mysqli
pdo

在实际执行查询之前,您可以测试输入到查询中的值:

if ( $shopCode && $itemNumber && $itemDescription ){
  // Query params exist - run the query
  $order = "INSERT INTO...";
  ...
} else {
  // Query params missing - query not executed 
}


最后,我建议您阅读以下文章,解释为什么使用
mysql.*
库是一个非常糟糕的主意。:

您可以检查它们是否已设置:

if(isset($shopCode, $itemNumber, $itemDescription)) {
    // do your stuff
}
或者如果它们是空的:

if(!empty($shopCode) && !empty($itemNumber) && !empty($itemDescription)) {
    // do your stuff
}

请不要通过在字符串中插入变量来组装MySQL语句。如果您没有正确地转义传入的数据,那么您的应用程序将面临SQL注入攻击的风险。您应该改为使用准备好的语句进行调查。我通常使用一个名为“submitting”的隐藏表单值,并在表单提交时将其设置为“1”。然后,当文章通过时,我选中$submitting=$\u POST('submitting');并且只有在提交表单时才执行必要的代码。众所周知,这是一个只有具有登录权限的人才能访问的部分,注入攻击并不是问题,因为登录设置使用PDO。只有3个人可以访问。当我有时间时,这将更改@LeighSimpson
注意:未定义变量:shopCode
@AbraCadaver-yes。。这是真的,因为我的代码只是一个片段。我不太清楚你的评论是什么意思…OP抱怨一个未定义的变量错误,而你的代码抛出一个未定义的变量错误。@Abracadver-我看不到OP中的信息。。。您在哪里看到有关
未定义变量的详细信息
错误?如果未设置变量,您发布的代码会引发错误,这就是问题所在。我认为您没有抓住要点。。。您的代码将产生与OP完全相同的结果。当参数(
$shopCode
$itemNumber
…等)丢失时,第一次加载页面时,您仍然会得到“输入数据失败”的结果。@lix这是一个输入错误,结束大括号的位置不正确。我将使用它,直到我有机会用PDO重新编写它,谢谢这回答了我的问题。