我有一个很大的表格,我试图用作插入操作的数据。 我已经看了好几个小时了:(这是我的第一篇文章,如果这篇文章的格式不好,对不起,因为我不确定这条错误消息到底是什么原因,所以我很抱歉: PDOStatement: :execute():SQLSTATE [HY093]:无效的参数编号:未在...的行上定义参数。
我对此感到疑惑的可能是问题所在:
因为我在主键上使用了自动增量,所以我认为我不必在该行的列中插入任何数据。 我说的对吗? 如果是这样,我做对了吗?
我在表中有一个不想通过使用html表单数据插入的foriegn键。 我在参考表中为此输入了一个“测试输入”,其值为1。我试图在php代码中的第一个注释下方对此进行操作。
我从google上发现的所有问题是,如果您在参数和值之间没有正确的匹配且与或正确的金额(从数据库中我错过了idInlog(自动递增)和患者(如果我不想从中收集),则经常会发生此问题html表单)
这是我打印出帖子数组时浏览器中的结果:(如果您需要html,我会更新帖子)
Array([firstName] => Jefferie [middleName] => Arne [lastName] => Lidebo [alder] => 27 [variationsNamn] => Blindhet [diagnosNamn] =>Hjärtfel[harBehandling] => ja [medicinNamn] => Ipren [harLångHistoria] => ja [harNedsattImmun] => ja [missbrukNamn] => Morfin [地址] =>ÖstraLånggatan8,1002 [postnr] => 47537 [ort] =>Skövde[teleNummer] => 000-000-0000 [电子邮件] => jefferielidebo@gmail.com [notisSätt] =>短信[kommentar] =>我写的评论[提交] =>发送)
我的mysql代码如下所示:
create table forstaInloggning(
idInlog INT NOT NULL AUTO_INCREMENT,
firstName VARCHAR(32),
middleName VARCHAR(32),
lastName VARCHAR(32),
variationsNamn VARCHAR(64),
missbrukNamn VARCHAR(64),
diagnosNamn VARCHAR(64),
medicinNamn VARCHAR(64),
harNedsattImmun BOOLEAN NOT NULL DEFAULT 0,
harLångHistoria BOOLEAN NOT NULL DEFAULT 0,
harBehandling BOOLEAN NOT NULL DEFAULT 0,
adress VARCHAR(32),
postnr CHAR(5),
ort VARCHAR(32),
teleNummer VARCHAR(12),
eMail VARCHAR(32),
notisSätt VARCHAR(32),
kommentar VARCHAR(400),
patient INT,
primary key(idInlog),
foreign key(patient) references Patient(idPat)
)engine=innodb;
这是我的php代码:
$pdo = new PDO('mysql:dbname=MyDbname;host=Myhost','Myusername', 'Mypassword');
if(isset($_POST['firstName'])){
print_r($_POST);
$insertquery='
INSERT INTO forstaInloggning
(firstName,middleName,lastName,alder,variationsNamn,
diagnosNamn,harBehandling,medicinNamn,harLångHistoria,
harNedsattImmun,missbrukNamn,adress,postnr,ort,
teleNummer,eMail,notisSätt,kommentar,patient)
VALUES
(:firstName,:middleName,:lastName,:alder,:variationsNamn,
:diagnosNamn,:harBehandling,:medicinNamn,:harLångHistoria,:harNedsattImmun,
:missbrukNamn,:adress,:postnr,:ort,:teleNummer,:eMail,:notisSätt,:kommentar,
:patient);';
$stmt = $pdo->prepare($insertquery);
$stmt->bindParam(':firstName',$_POST['firstName']);
$stmt->bindParam(':middleName',$_POST['middleName']);
$stmt->bindParam(':lastName',$_POST['lastName']);
$stmt->bindParam(':alder',$_POST['alder']);
$stmt->bindParam(':variationsNamn',$_POST['variationsNamn']);
$stmt->bindParam(':diagnosNamn',$_POST['diagnosNamn']);
$stmt->bindParam(':harBehandling',$_POST['harBehandling']);
$stmt->bindParam(':medicinNamn',$_POST['medicinNamn']);
$stmt->bindParam(':harLångHistoria',$_POST['harLångHistoria']);
$stmt->bindParam(':harNedsattImmun',$_POST['harNedsattImmun']);
$stmt->bindParam(':missbrukNamn',$_POST['missbrukNamn']);
$stmt->bindParam(':adress',$_POST['adress']);
$stmt->bindParam(':postnr',$_POST['postnr']);
$stmt->bindParam(':ort',$_POST['ort']);
$stmt->bindParam(':teleNummer',$_POST['teleNummer']);
$stmt->bindParam(':eMail',$_POST['eMail']);
$stmt->bindParam(':notisSätt',$_POST['notisSätt']);
$stmt->bindParam(':kommentar',$_POST['kommentar']);
/*The following 2 rows is just a test to see if i needed to insert an extra parameter because it
exist in the database but not in the form*/
$patient = 1;
$stmt->bindParam(':patient',$patient);
$stmt->execute(); /*THIS ROW IS WHERE THE ERROR MESSAGE POINTS TO*/
}