php - 使用 ON DUPLICATE KEY 子句时更新不起作用

标签 php mysql pdo on-duplicate-key

我在 SO 上发现了几个类似的问题,但我是 PDO 新手,无法成功地根据我的标准调整代码..
我不知道为什么这段代码不起作用。 我不知道为什么这段代码不起作用。 我不知道为什么这段代码不起作用。 我有表用户。 我有表格帖子 我的代码 html 表单选择和代码 php 。

 <form method="POST" name="setform">
                <div class="moncompte">
                        <!-- pseudo-->  <label class="moncompteLabel" >Pseudo</label>
                                    <input type="text" name="pseudo" class="moncompteInput" autocomplete="off">
                </div>
                <div class="moncompte">
                        <!-- nom--> <label class="moncompteLabel">Nom d'utilisateur</label>
                                    <input type="text" name="fullname" class="moncompteInput" autocomplete="off">
                </div>
                <div class="moncompte">
                        <!-- email-->   <label class="moncompteLabel">Email</label>
                                    <input type="email" name="email" class="moncompteInput" autocomplete="off">
                </div>
                <div class="moncompte"> 
                         <!-- sexe-->   <label class="moncompteLabel"> Sélectionnez sexe </label>
                                <select name="genre" title="sexe" class="moncompteSelect">
                                        <option value="0" selected="selected">Homme</option>
                                        <option value="1">Femme</option>
                                        </select>
                </div>
                <div class="moncompte">
                   <!-- date--> <label class="moncompteLabel"> Date de naissance</label>
                            <div class="dateSelect">
                                    <select name="naissanceJ" title="jour" class="naissanceSelect" >
                                        <option value="0">jour</option>
                                        <option value="1" selected="1">1</option>
                                        <option value="2">2</option>
                                        <option value="3">3</option>
                                        <option value="4">4</option>
                                      </select>
                                      <select name="naissanceM" title="mois"  class="naissanceSelect">
                                        <option value="0">mois</option>
                                        <option value="1" selected="1">jan</option>
                                        <option value="2">fév</option>
                                        <option value="3">ma</option>
                                        <option value="4">avr</option>
                                      </select>
                                    <select name="naissanceA" title="année" class="naissanceSelect">
                                        <option value="0">année</option>
                                        <option value="2018" selected="1">2018</option>
                                        <option value="2017">2017</option>
                                        <option value="2016">2016</option>
                                      </select>
                            </div>
                 </div>

                <div class="moncompte">
            <input type="submit" name="enregistrer" value="enregistrer" class="moncompteSub">
                </div>

    </form>

PHP代码

  $idd = trim(htmlspecialchars($_SESSION['user_id']));
$id = filter_var($idd, FILTER_SANITIZE_NUMBER_INT);


    $pseudo = htmlspecialchars($_POST['pseudo']);
    $fullname = htmlspecialchars($_POST['fullname']);
    $email = htmlspecialchars($_POST['email']);
    $genre = htmlspecialchars($_POST['genre']);

    $stmt = $connect->prepare("INSERT INTO users(pseudo,email,naissancej,naissancem,naissancea,genre,fullname)
VALUES(:pseudo,:email,:naissancej,:naissancem,:naissancea,
:genre,:fullname) ON DUPLICATE KEY UPDATE 
     pseudo=:pseudo2,
     email=:email2,
     naissancej=:naissanceJ2,
     naissancem=:naissanceM2,
     naissancea=:naissanceA2,
     genre=:genre2,
     fullname=:fullname2 WHERE id=5 ");

$stmt->execute(array(
        ':pseudo'=> $pseudo,
        ':email'=> $email,
        ':naissancej'=> $naissanceJ,
         ':naissancem'=> $naissanceM,
        ':naissancea'=> $naissanceA,
        ':genre'=> $genre,
        ':fullname'=> $fullname,

        ':pseudo2'=> $pseudo,
        ':email2'=> $email,
        ':naissancej2'=> $naissanceJ,
         ':naissancem2'=> $naissanceM,
        ':naissancea2'=> $naissanceA,
        ':genre2'=> $genre,
        ':fullname2'=> $fullname
    ));

最佳答案

INSERTS 没有 WHERE 子句!删除这个。

INSERT INTO users 
(pseudo,email,naissancej,naissancem,naissancea,genre,fullname)
VALUES
(:pseudo,:email,:naissancej,:naissancem,:naissancea,:genre,:fullname)
ON DUPLICATE KEY UPDATE 
  pseudo=:pseudo2,
  email=:email2,
  naissancej=:naissanceJ2,
  naissancem=:naissanceM2,
  naissancea=:naissanceA2,
  genre=:genre2,
  fullname=:fullname2

关于php - 使用 ON DUPLICATE KEY 子句时更新不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48435089/

相关文章:

php - mysqli get_result 和 bind_result 之间的性能或安全差异?

php - Laravel - PDO - 动态表名

php - 对象错误: function query on a non-object

php - 使用 Php 5 和 MySQL 进行 GPS 半径搜索

php - 存储过程与 mysql 一起工作,但 php 出现错误

php - CodeIgniter 3 MySQL 查询随机间歇性工作

php - 使用 mysqli 而不是 mysql 时运行一段时间。

php - 远程 MySQL 不适用于 Laravel Config

php - PDO连接异常捕获

php - PDO查询错误: 2013 Lost connection to MySQL server during query [Need Optimization Help]