-2

我在 php 上编写了一个代码来修改一些 mysql 单元格内容,但是我的代码返回错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '( datanasc, rg, rgemissor, cpf, sexo, cnh, tituloeleitor, ,' 附近使用正确的语法zonaeleitoral

    <?php
    include('mysql.php');
    mysql_select_db("teste", $conexao);

    $schema = array('idfunc', 'nomefunc', 'rg', 'rgemissor', 'cpf', 'cnh', 'reservista', 'estrangeiro', 'tituloeleitor', 'zonaeleitoral', 'sindicato', 'matsindical', 'estadocivil', 'datanasc', 'nacionalidade', 'naturalidade', 'endereco', 'salario', 'expediente', 'cargahoraria', 'beneficiarios', 'admissao', 'numeropis', 'banco', 'agencia', 'dataretroativo', 'datadispensa', 'sexo', 'nomepai', 'nomemae', 'funcao', 'linkfoto');
    $fields = array();
    $values = array();
    foreach($_POST as $key => $val){
        if (in_array($key, $schema)){
            $fields[] = "`".mysql_real_escape_string($key)."`";
            $values[] = "`".mysql_real_escape_string($val)."`";
        }
    }

    $ins = mysql_query("UPDATE funcionarios SET(".implode(",",$fields).") VALUES(".implode(",",$values).")") or die(mysql_error());
    echo "Funcionário modificado com sucesso.";


    mysql_close($conexao)
    ?>
4

4 回答 4

2

您的查询格式不正确,因为您基本上使用的是 INSERT 语句,其中使用“UPDATE”一词代替“INSERT”。

更新语句的结构如下:

UPDATE table_name SET column = value WHERE column = conditional_value;

而您正在尝试执行这样的更新:

UPDATE table_name SET(column) VALUES(value);
于 2013-07-19T12:40:27.687 回答
1

的正确语法update

UPDATE table_name
SET column_name = value, column_2 = value....
WHERE column1 = value

但是您的查询会将其生成为

UPDATE funcionarios SET column1,column2,... VALUES val1,val2,...
于 2013-07-19T12:40:28.170 回答
0

改变这一行:

"`".mysql_real_escape_string($val)."`";

"'".mysql_real_escape_string($val)."'";

并且无需转义列

"`".($key)."`"

然后将代码更改为:

foreach($_POST as $key => $val){
        if (in_array($key, $schema)){
            $updates[] = " `$key` =  '".mysql_real_escape_string($val)."'";
        }
}

这行:

$ins = mysql_query("UPDATE funcionarios SET ".implode(", ", $updates)) or die(mysql_error());
于 2013-07-19T12:40:43.333 回答
0

这意味着由于错误,您的查询不正确。打印出您的查询(“更新...)以查看结构并验证查询中的错误位置。此外,您的更新语句不正确。

于 2013-07-19T12:41:08.040 回答