我有一堂课,我需要用PHP和MySQL数据库创建一个网站。问题是我无法从PHP表单中的数据库中插入数据。在要求用户写入将要插入数据库中的不同值之后,要求用户写入其用户名和密码。使用用户名和密码,我需要找到用户的ID。使用该ID,我需要将网站用户输入的值插入到表PERSONNAGE中,该行的IDUser是用户名和密码中的IDUser。这是一个可以更好地说明自己的例子:
<form action="backend.php" method="POST">
<fieldset>
<legend>Creation Personnage</legend>
<label> Username :
<input type="text" name="nom" id="nom" />
</label>
<label> Password :
<input type="text" name="mdp" id="mdp" />
</label>
<br><br><br><br>
<label> Race :
<input type="text" name="race" id="race" />
</label>
<label> Classe :
<input type="text" name="classe" id="classe" />
</label>
<br><br>
<label> Niveaux :
<input type="text" name="niveaux" id="niveaux" />
</label>
<label> Experience :
<input type="text" name="experience" id="experience" />
</label>
<br><br>
<label> Sexe :
<input type="text" name="sexe" id="sexe" />
</label>
<label> Age :
<input type="text" name="age" id="age" />
</label>
<br><br>
<label> Poids :
<input type="text" name="poids" id="poids" />
</label>
<label> Peau :
<input type="text" name="peau" id="peau" />
</label>
<br><br>
<label> Cheveux :
<input type="text" name="cheveux" id="cheveux" />
</label>
<label> Yeux :
<input type="text" name="yeux" id="yeux" />
</label>
<br><br>
<label> Religion :
<input type="text" name="religion" id="religion" />
</label>
<label> Portrait :
<input type="text" name="portrait" id="portrait" />
</label>
<br><br>
</fieldset>
<input type="submit" value="Ajouter">
</div>
这是backend.php:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
include_once($_SERVER["DOCUMENT_ROOT"]."/cnxPDO.php");
if($_SERVER['REQUEST_METHOD'] === 'POST')
{
$con = connecPDO("DD", "myparam");
$nom = $_POST['nom'];
$mdp = $_POST['mdp'];
$race = $_POST['race'];
$classe = $_POST['classe'];
$niveaux = $_POST['niveaux'];
$experience = $_POST['experience'];
$sexe = $_POST['sexe'];
$age = $_POST['age'];
$poids = $_POST['poids'];
$peau = $_POST['peau'];
$cheveux = $_POST['cheveux'];
$yeux = $_POST['yeux'];
$religion = $_POST['religion'];
$portrait = $_POST['portrait'];
$idUser = 'SELECT idUser FROM USER WHERE nom = '$nom' AND mdp = '$mdp'';
$sql='INSERT INTO PERSONNAGE(idUser,race,classe,niveaux,experience,sexe,age,poids,peau,cheveux,yeux,religion,portrait)
VALUES(:idUser,:race,:classe,:niveaux,:experience,:sexe,:age,:poids,:peau,:cheveux,:yeux,:religion,:portrait)';
$stmt = $con->prepare($sql);
$stmt->BindParam(':idUser',$idUser);
$stmt->BindParam(':race',$race);
$stmt->BindParam(':classe',$classe);
$stmt->BindParam(':niveaux',$niveaux);
$stmt->BindParam(':experience',$experience);
$stmt->BindParam(':sexe',$sexe);
$stmt->BindParam(':age',$age);
$stmt->BindParam(':poids',$poids);
$stmt->BindParam(':peau',$peau);
$stmt->BindParam(':cheveux',$cheveux);
$stmt->BindParam(':yeux',$yeux);
$stmt->BindParam(':religion',$religion);
$stmt->BindParam(':portrait',$portrait);
if (!$stmt->execute()) {
echo "<br>PDO::errorCode():";
print_r($stmt->errorCode());
echo "<br>PDO::errorInfo():";
print_r($stmt->errorInfo());
}
else { echo " <br> Sauvegarde effectuée"; }
}
?>
我真的需要帮助才能完成此任务,否则我将不及格!事实是,我们的老师对课程没有任何解释,我们必须在网上找到所有内容!我不了解3/4的PHP和MySQL。所以我真的需要一些帮助!还有很多我需要做,但是我将从这里开始。
答案 0 :(得分:0)
该错误与以下事实直接相关:为SQL语句参数提供的变量数量错误。或者,您尝试更新表中不存在的列。
检查列名是否与语句中提供的列名完全匹配,并确保仅为表中存在的列提供数据。
此外,如果您希望PHP将SQL语句中的值插入变量中,则必须在SQL语句中使用双引号而不是单引号。如果您使用双引号,PHP只会将值插值到变量中。