我试着让我的更新表单和查询更新为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);
?>
答案 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'";
注意:正如其他人所说,这不安全!在将用户输入传递到数据库之前,应始终清理用户输入。