Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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仅更新mysql中的NOTNULL输入值_Php_Mysql - Fatal编程技术网

使用PHP仅更新mysql中的NOTNULL输入值

使用PHP仅更新mysql中的NOTNULL输入值,php,mysql,Php,Mysql,我有一个包含数千行的数据库,用户可以通过提供更新的值来更新他/她的行,我只需要使用用户提供的非空值更新该行,如果用户提供的值为空,则应保留以前的数据,例如: id=1 name = John address = USA 如果用户提供的名称为空值,地址为UK值,则数据应为: id=1 name =John address = UK 非常感谢您对php代码示例的任何帮助。您应该循环使用$\u POST superglobal并构建一个不包含空值的新插入数组,然后将其用于查询,而不是直接使用$\u

我有一个包含数千行的数据库,用户可以通过提供更新的值来更新他/她的行,我只需要使用用户提供的非空值更新该行,如果用户提供的值为空,则应保留以前的数据,例如:

id=1
name = John
address = USA
如果用户提供的名称为空值,地址为UK值,则数据应为:

id=1
name =John
address = UK

非常感谢您对php代码示例的任何帮助。

您应该循环使用$\u POST superglobal并构建一个不包含空值的新插入数组,然后将其用于查询,而不是直接使用$\u POST

$update = array();
foreach ($_POST as $key => $value) {
    if(!is_null($value) && !($value == ''))
        $update[$key] = $value;
}
然后对查询参数使用$update,它不应包含任何空值或空白值。

我使用PDO连接

首先创建一个表并按如下方式插入

create table testing(id int(11), name varchar(100),address varchar(200));

insert into testing values(100,'Null','California');
insert into testing values(200,'sectona','California');
pdo_connect.php

<?php




$db = new PDO (
    'mysql:host=localhost;dbname=yourdbname;charset=utf8', 
    'root', // username

    'root' // password
);
?>

<?php


pdo_connect.php


// from form inputs
/*
$id=$_POST["id"];
$name=$_POST["name"];
$address=$_POST["address"];
*/




// direct variable initialisation
/*
$id='100';
$name = 'John';
$name = 'Null';
$address = 'California';
*/

// initialize a null value
$check ='Null';



// check null value for name variable in the first insert statement
$resultn = $db->prepare('SELECT * FROM testing where name = :name');

        $resultn->execute(array(
            ':name' => 'Null'
    ));

while ($row = $resultn->fetch()) 
{
$nm = $row['name'];
}


if ($nm == $check)
{
echo '<b><font color=red><b></b>You cannot update with a Null Value</font></b>';
exit();
}


// update if name is not null



$update = $db->prepare('
            UPDATE testing SET 
            name = :name,address = :address 
            WHERE id= :id');

        $update->execute(array(
            ':name' => 'yourname',
            ':address' => 'USA',
':id' => '100'
));

echo 'update successful';
?>

是的,但如果我有超过20个值,那么检查每个值并不容易。你应该使用ORM,那么你就不必担心这个问题。不清楚你在这里做什么会让你感到困惑,但问题似乎源于与数据库的接口级别太低。现代PHP开发鼓励使用类似的方法,为构建应用程序提供了坚实的基础。找到一个适合你的风格和需要,并遵循示例和文档。大多数网站都有一个庞大的社区代码库,你可以添加进去,这样就不需要像你在这里尝试的那样重新发明轮子。请不要要求用户将你的代码标记为正确。你的回答将根据其是非曲直而不是辩护来评判。
$resultn = $db->prepare('SELECT * FROM testing where name = :name');

        $resultn->execute(array(
            ':name' => 'sectona'
    ));