UPDATE准备好的语句执行没有错误,但表没有更新

时间:2013-09-08 21:58:30

标签: php sql mysqli

我正在将数据插入表中,然后更新某些未插入值的字段。代码可以正常运行,但字段不会更新。

这是我的代码:

$mysqli = new mysqli("localhost", "root", "", "mydb");

$stmt = $mysqli->prepare("UPDATE my_table SET   field1=?, 
                                                field2=?,
                                                field3=?,
                                                field4=?,
                                                field5=?,
                                                field6=?,
                                                field7=?,
                                                field8=?,
                                                field9=?,
                                                field10=?,
                                                field11=?,
                                                field12=?,
                                                field13=?,
                                                updateTime=now()
                         WHERE id=?"); 

$stmt->bind_param('isssssssssssss', $info['x'],
                                    $info['x2'],
                                    $info['x3'],
                                    $info['x4'],
                                    $info['x5'],
                                    $info['x6'],
                                    $info['x7'],
                                    $info['x8'],
                                    $info['x9'],
                                    $info['x10'],
                                    $info['x11'],
                                    $info['12'],
                                    $info['x13'],
                                    $_GET['id']);

$stmt->execute();

列和变量的名称已更改,但在原始代码中,它们与现有列匹配。

非常感谢。

3 个答案:

答案 0 :(得分:2)

解决任何mysqli更新问题的完整检查表

  1. 为mysqli设置错误报告

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    

    (添加此行一次,就在mysqli_connect之前)

  2. 以及PHP以及

    ini_set('display_errors',1);
    error_reporting(E_ALL);
    
  3. 如果肯定没有错误的话
    • 要么匹配WHERE clasue
    • 的行
    • 或所有字段已更新
  4. 如果你认为上面的项目是不可能的 - 那么就会有某种类似拼写错误的错误。就像你正在编辑错误的脚本,检查错误的数据库等。仔细检查一切。然后再说。

答案 1 :(得分:0)

我看到了

  $info['12'],

在你的倒数第二个绑定中。

除此之外,我们无法明确地找到错误,因为您没有向我们展示您实际尝试执行的代码。

答案 2 :(得分:-2)

我不太了解你,但你可以试试这段代码

$updateinfo = $mysqli->query("Update setting SET
field1='$field1', 
field2='$field2'
");