我在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
));
答案 0 :(得分:0)
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
答案 1 :(得分:0)
如果您查看 documentation ,最后会有WHERE
条款并导致错误,请注意,您已经提到
ON DUPLICATE KEY UPDATE
它将负责更新特定行。
fullname=:fullname2 WHERE id=5
应该只是
fullname=:fullname2