0

这不是一个问题,而是一个我认为非常有用的评论。

下面的一段代码

$sql="UPDATE    Adherents
         SET    Prenom='$_POST[tfPrenom]',  
                Civilite='$_POST[mdCivil]',
                .....
       WHERE No_Adherent=$LeNumero";

[随后是通常的 mysqli_query() 调用]

会不断失败并且非常难以调试:在“死”条件下

if (!$resultat) { die ('无法更新:错误代码是 ' .mysqli_connect_errno() .' 描述为 '.>mysqli_connect_error()); }

它将返回“无法更新:错误代码为 0 描述为”,即 NO ERROR CODE,NO ERROR MESSAGE。

事实上,我的错误在于行名拼写错误(当然,这里没有注意到它——缺少尾随字母)。

结论:mysqli_query() 可以在没有适当的错误代码/消息的情况下生成错误。

我希望这可以帮助一些人。

4

2 回答 2

1

您使用了错误的功能。

如手册条目中所述mysqli_connect_errno()

返回上次调用的最后一个错误代码号mysqli_connect()

你想要mysqli_errno()并且mysqli_error()

if (!$resultat) die (
  'Unable to update: error code is '
  . mysqli_errno($link) . ' described as ' . mysqli_error($link)
);
于 2012-10-21T04:51:41.697 回答
0

使用 sprintf 而不是直接在查询字符串中使用变量。

$sql =sprintf("UPDATE Adherents SET Prenom= %s, Civilite=%s WHERE No_Adherent=%s",$_POST[tfPrenom], $_POST[mdCivil], $LeNumero);

PHP 将用变量值替换 %s。

请尝试以下方法来检测错误:

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    if (!mysqli_query($link, "update ...SET a=1")) {
        printf("Errormessage: %s\n", mysqli_error($link));
    }

    /* close connection */
    mysqli_close($link);
    ?>
于 2012-10-21T05:51:17.703 回答