Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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 - Fatal编程技术网

Php 如何仅更新表单中非空的字段

Php 如何仅更新表单中非空的字段,php,Php,我对MySQL和PHP非常陌生,已经自学了一段时间。我不希望有人为我编写代码,但我正在寻找一些关于如何最好地继续使用此脚本的建议 我有一组用户可以更新他们在特定产品上的“技能水平”。目前,所有这些我都在工作。但是,我不希望用户每次提交时都必须更新每个技能级别 因此,换句话说,我希望他们能够将一个字段留空,但用他们的技能水平填充其他字段,从而只更新他们输入的字段 我在一个开发服务器上完成这一切,所以这里是我目前正在使用的代码 mysql_connect("127.0.0.1","root","ti

我对MySQL和PHP非常陌生,已经自学了一段时间。我不希望有人为我编写代码,但我正在寻找一些关于如何最好地继续使用此脚本的建议

我有一组用户可以更新他们在特定产品上的“技能水平”。目前,所有这些我都在工作。但是,我不希望用户每次提交时都必须更新每个技能级别

因此,换句话说,我希望他们能够将一个字段留空,但用他们的技能水平填充其他字段,从而只更新他们输入的字段

我在一个开发服务器上完成这一切,所以这里是我目前正在使用的代码

mysql_connect("127.0.0.1","root","time2start") or die("Connection Failed");
mysql_select_db("joomla_dev_15") or die ("Database Connection Failed");
$user = $_POST['user'];
$USP = $_POST['USP'];
$USPV = $_POST['USPV'];
$VSP = $_POST['VSP'];
echo "$user<br />";
echo "$USP<br />";
echo "$USPV<br />";
echo "$VSP<br />";

$query = "UPDATE `joomla_dev_15`.`enterprise_storage` SET  `$user` =  '$USP' WHERE `enterprise_storage`.`id` = 1;";
if(mysql_query($query))
{
    echo "updated<br />";
}else{
    echo "FAILURE";
}

$query = "UPDATE  `joomla_dev_15`.`enterprise_storage` SET  `$user` =  '$USPV' WHERE  `enterprise_storage`.`id` =2;";
if(mysql_query($query))
{
    echo "updated<br />";
}else{
    echo "FAILURE";
}

$query = "UPDATE  `joomla_dev_15`.`enterprise_storage` SET  `$user` =  '$VSP' WHERE  `enterprise_storage`.`id` =3;";
if( mysql_query($query) )
{
    echo "updated<br />";
}else{
    echo "FAILURE";
}
mysql_connect(“127.0.0.1”、“root”、“time2start”)或die(“连接失败”);
mysql_select_db(“joomla_dev_15”)或die(“数据库连接失败”);
$user=$_POST['user'];
$USP=$_POST['USP'];
$USPV=$_POST['USPV'];
$VSP=$_POST['VSP'];
回显“$user
”; 回声“$USP
”; 回声“$USPV
”; 回声“$VSP
”; $query=“UPDATE`joomla\u dev\u 15`.`enterprise\u storage`SET`$user`='$USP',其中`enterprise\u storage`.`id`=1;”; if(mysql_查询($query)) { 回显“更新的
”; }否则{ 呼应“失败”; } $query=“UPDATE`joomla\u dev\u 15`.`enterprise\u storage`SET`$user`='$USPV',其中`enterprise\u storage`.`id`=2;”; if(mysql_查询($query)) { 回显“更新的
”; }否则{ 呼应“失败”; } $query=“UPDATE`joomla\u dev\u 15`.`enterprise\u storage`SET`$user`='$VSP',其中`enterprise\u storage`.`id`=3;”; if(mysql_查询($query)) { 回显“更新的
”; }否则{ 呼应“失败”; }

任何帮助或建议都将不胜感激

检查表单值是否为空,如果为空,则不要将其发布到数据库中。此外,在将其放入数据库之前,您确实需要查看清理用户输入。请参阅示例。

检查表单值是否为空,如果为空,请不要将其发布到数据库中。此外,在将其放入数据库之前,您确实需要查看清理用户输入。例如,请参阅。

也许我没有完全理解这一点,但是在UPDATE语句之前检查变量就足够了

$user = $_POST['user'];
$USP = $_POST['USP']; // Make sure to escape this

if (!empty(trim($USP))) { // Added a trim so that when space is entered, it will still be considered empty
  $query = "UPDATE `joomla_dev_15`.`enterprise_storage` SET  `$user` =  '$USP' WHERE `enterprise_storage`.`id` = 1;";
  if(mysql_query($query))
  {
    echo "updated<br />";
  }else{
    echo "FAILURE";
  }
}
else {
  echo "Empty String. Nothing to Do"
}
$user=$\u POST['user'];
$USP=$_POST['USP'];//一定要避开这个
如果(!empty(trim($USP)){//添加了一个trim,以便在输入空格时仍将其视为空
$query=“UPDATE`joomla\u dev\u 15`.`enterprise\u storage`SET`$user`='$USP',其中`enterprise\u storage`.`id`=1;”;
if(mysql_查询($query))
{
回显“更新的
”; }否则{ 呼应“失败”; } } 否则{ echo“空字符串。无需执行” }
也许我没有完全理解这一点,但是在UPDATE语句之前检查变量就足够了

$user = $_POST['user'];
$USP = $_POST['USP']; // Make sure to escape this

if (!empty(trim($USP))) { // Added a trim so that when space is entered, it will still be considered empty
  $query = "UPDATE `joomla_dev_15`.`enterprise_storage` SET  `$user` =  '$USP' WHERE `enterprise_storage`.`id` = 1;";
  if(mysql_query($query))
  {
    echo "updated<br />";
  }else{
    echo "FAILURE";
  }
}
else {
  echo "Empty String. Nothing to Do"
}
$user=$\u POST['user'];
$USP=$_POST['USP'];//一定要避开这个
如果(!empty(trim($USP)){//添加了一个trim,以便在输入空格时仍将其视为空
$query=“UPDATE`joomla\u dev\u 15`.`enterprise\u storage`SET`$user`='$USP',其中`enterprise\u storage`.`id`=1;”;
if(mysql_查询($query))
{
回显“更新的
”; }否则{ 呼应“失败”; } } 否则{ echo“空字符串。无需执行” }
我以一种令我满意的方式找到了答案

请记住,这段代码不一定是经过净化或安全的恶意攻击,这只是一个开发服务器,因此我可以证明这一概念,稍后我会回来保护它

而且,我自学过,所以这很可能不是最有效的方法

为了获得用户技能的当前默认值,我必须运行此查询

$result = mysql_query("SELECT id , user FROM enterprise_storage WHERE id =1");
if (!$result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
$row1 = mysql_fetch_array($result);
这允许我为基于此特定查询返回的每一行分配一个变量。因此,在本例中,此人(在本例中称为“用户”)将返回产品ID“1”的技能级别

一旦我对我想要分配变量的几个项目运行了相同的查询,我就可以将其作为每个文本框的默认值放在html表单中:

Please enter your skill level on the following products:</br>
USP: <input type="text" name="USP" value=<?php echo $row1[user]?> /><br />
USPV: <input type="text" name="USPV" value=<?php echo $row2[user]?> /><br />
VSP: <input type="text" name="VSP" value=<?php echo $row3[user]?> /><br />
请输入您对以下产品的技能等级:
美国药典:/>

VSP:我能够以一种令我满意的方式找到答案

请记住,这段代码不一定是经过净化或安全的恶意攻击,这只是一个开发服务器,因此我可以证明这一概念,稍后我会回来保护它

而且,我自学过,所以这很可能不是最有效的方法

为了获得用户技能的当前默认值,我必须运行此查询

$result = mysql_query("SELECT id , user FROM enterprise_storage WHERE id =1");
if (!$result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
$row1 = mysql_fetch_array($result);
这允许我为基于此特定查询返回的每一行分配一个变量。因此,在本例中,此人(在本例中称为“用户”)将返回产品ID“1”的技能级别

一旦我对我想要分配变量的几个项目运行了相同的查询,我就可以将其作为每个文本框的默认值放在html表单中:

Please enter your skill level on the following products:</br>
USP: <input type="text" name="USP" value=<?php echo $row1[user]?> /><br />
USPV: <input type="text" name="USPV" value=<?php echo $row2[user]?> /><br />
VSP: <input type="text" name="VSP" value=<?php echo $row3[user]?> /><br />
请输入您对以下产品的技能等级:
美国药典:/>

VSP:+1对于正确的态度,现在没有时间帮助。您是否考虑过如果用户故意将该字段留空?如果用户将其设置为空(因为他希望将其清除),您的脚本将不会更新为字段,对吗?无论如何,您都必须构建一个mysql语句,因此只需迭代这些值,并在sql查询中只包含非空值。此外,考虑用当前对应的数据库值填充表单,尽管@约瑟夫没有明确地表示它,我认为他是正确的;通常情况下,在页面加载时,表单上的字段会预先填写他们之前输入的信息,以便访问者可以更改或删除该字段并提交表单。那么所有的字段都必须保存在数据库中,还有空字段。+1表示正确的态度,现在没有时间帮助。你考虑过了吗