Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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_Database_Variables_Shortcut - Fatal编程技术网

PHP变量及其显示方式

PHP变量及其显示方式,php,database,variables,shortcut,Php,Database,Variables,Shortcut,这是我的变量 $error=[]; $dbname=htmlspecialchars(trim($_POST["dbname"])); $dbusername=htmlspecialchars(trim($_POST["dbusername"])); $dbpassword=htmlspecialchars(trim($_POST["dbpassword"])); $dbhost=htmlspecialchars(trim($_POST["dbhost"]));; $debugging=$_P

这是我的变量

$error=[];

$dbname=htmlspecialchars(trim($_POST["dbname"]));
$dbusername=htmlspecialchars(trim($_POST["dbusername"]));
$dbpassword=htmlspecialchars(trim($_POST["dbpassword"]));
$dbhost=htmlspecialchars(trim($_POST["dbhost"]));;
$debugging=$_POST["debugging"];

...  // i got such variables many some are not belong to post as well
我想这样显示错误

if(empty($dbname){
echo $error['$dberro']="Hey you have missed the database name";
}
if(empty($dbusername){
echo $error['$dbusernameerror']="Hey you have missed the database user name";
}
....   // i have such code many
if (isset($error[$dberror])){
echo "$error[$dberror]";
}
... //i have such many
我有这样的40个变量,我如何很容易地做到这一点……我在静态页面或其他类似的php页面上显示

if(empty($dbname){
echo $error['$dberro']="Hey you have missed the database name";
}
if(empty($dbusername){
echo $error['$dbusernameerror']="Hey you have missed the database user name";
}
....   // i have such code many
if (isset($error[$dberror])){
echo "$error[$dberror]";
}
... //i have such many
代码不是太庞大了吗?也许还有比这更好的主意


我能得到这些想法吗?

你可以使用一个数组并循环通过它来检查。。大概是这样的:

$db_array = array(
'dbname' => htmlspecialchars(trim($_POST["dbname"])),
'dbusername' => htmlspecialchars(trim($_POST["dbusername"])),
etc..
etc..
);

foreach($db_array as $key => $value) {
  if(empty($value)) {
    echo "Hey you have missed: $key";
  }
}

编辑:根据jtmanteos注释更正

您可以创建第一个数组来存储变量及其说明 另一个用于存储数据:

<?php
$error=[];
//data associate var and its description
$data[
    'dbname'=>'database name',
    'dbusername'=>'database user name',
    'dbpassword'=>'database password',
    'dbhost'=>'database host',
    'debugging'=>'debugging'
    ];

//values store the values in an array
$values['dbname']=htmlspecialchars(trim($_POST["dbname"]));
$values['dbusername']=htmlspecialchars(trim($_POST["dbusername"]));
$values['dbpassword']=htmlspecialchars(trim($_POST["dbpassword"]));
$values['dbhost']=htmlspecialchars(trim($_POST["dbhost"]));;
$values['debugging']=$_POST["debugging"];

//test values
foreach($data as $var=>$description){
    if(empty($values[$var]){
        echo $error[$var]="Hey you have missed the ".$description;
    }
}
这个怎么样:

<?php
    foreach($_POST as $key => $value) {
        $$key = htmlspecialchars(trim($_POST["dbname"]));
        if(empty($$key)) {
            echo "Hey you have missed: $key";
        }
    }
?>


foreach循环应该是一种更容易/更紧凑的方式来显示错误。我希望现在您明白为什么要使用PHP框架了?@VincentDecaux PHP框架来显示一段脚本?这就像建造摩天大楼开咖啡馆一样。当然,ChrisWillard提到的基本foreach循环是进入框架工作的方式。。。??为什么要使用??框架为什么要使用。。。难读!为什么只有一个剧本?他定义了db连接,所以肯定没有一个PHP文件。我认为您不想检查
empty($key)
,因为它永远不会为空。我想你想要
空($value)
。是的,你说得对@jtmanteo,那一个从我身边溜走了/但它说的是“嘿,你错过了数据库名”而不是数据库名,不是吗???@user3689984;这只是一个你如何做到这一点的例子。你需要把它写进剧本里,它不会像复制/粘贴那样简单,但应该会让您知道如何处理它。啊,是的,但我说过我想显示这样的消息*您错过了数据库名称*问题是否不清楚?此解决方案假设您的提交表单html有以您要查找的所有键命名的输入,并且所有输入都具有相同的名称“值”属性。如果没有,那么这些键甚至不会出现在您的post数组中