php html绑定数据,php - 如何使用stmt绑定参数使用php pdo将数据从html表单插入mysql数据库 - 堆栈内存溢出...

我有一个很大的表格,我试图用作插入操作的数据。 我已经看了好几个小时了:(这是我的第一篇文章,如果这篇文章的格式不好,对不起,因为我不确定这条错误消息到底是什么原因,所以我很抱歉: 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*/

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值