按ID更新,但只有我想要的字段

时间:2012-12-04 17:19:49

标签: php database row

我试着让我的更新表单和查询更新为id。但是当我把数据放在表格中时他会更新所有字段,即使它没有任何数据,所以在数据库中他得到“0”。 我只需要更新有数据的字段。

你们能帮助我吗?

它总是让我有未定义的变量!并且只更新第一个和第二个字段!

谢谢,这是我的代码:

    if (isset($_POST['alterar'])) {

    $id_cliente = $_POST["id_cliente"];
    $nome_cliente = $_POST["nome_cliente"];
    $telefone_cliente = $_POST["telefone_cliente"];
    $morada_cliente = $_POST["morada_cliente"];
    $email_cliente = $_POST["email_cliente"];
    $servico = $_POST["servico"];
    $n_pecas = $_POST["n_pecas"];
    $tp_arranjo = $_POST["tp_arranjo"];
    $descricao = $_POST["descricao"];

    } 

    $query = "UPDATE `clientes` SET ";
if ($nome_cliente) $columns[] = "`nome_cliente`        = '{$nome_cliente}'";
if ($telefone_cliente) $columns[] = "`telefone_cliente`= '{$telefone_cliente}'";
if ($morada_cliente) $columns[] = "`morada_cliente`  = '{$morada_cliente}'";
if ($email_cliente) $columns[] = "`email_cliente`   = '{$email_cliente}'";
if ($servico) $columns[] = "`servico`         = '{$servico}'";
if ($n_pecas) $columns[] = "`n_pecas`         = '{$n_pecas}'";
if ($tp_arranjo) $columns[] = "`tp_arranjo`      = '{$tp_arranjo}'";
if ($descricao) $columns[] = "`descricao`       = '{$descricao}'";

$columns = implode(",",$columns);
$query .= $columns . " WHERE id_cliente='$id_cliente'";


    mysql_query($query);

    ?>

1 个答案:

答案 0 :(得分:1)

如果您有要更新它们的值,则需要将查询更改为仅列出要更新的列。这需要根据条件动态构建查询字符串。

示例:

$query = "update `clientes` set ";
if ($nome_cliente) $columns[] = "`nome_cliente`= '{$nome_cliente}'";
if ($telefone_cliente) $columns[] = "`telefone_cliente`= '{$telefone_cliente}'";
//etc..

$columns = implode(",",$columns);
$query .= $columns . " where id_cliente='$id_cliente'";

注意:正如其他人所说,这不安全!在将用户输入传递到数据库之前,应始终清理用户输入。