如何使用stmt绑定参数,使用php pdo将数据从html表单插入mysql数据库
我有一个相当大的表单,我正试图用作插入操作的数据。我已经看了好几个小时了:(这是我第一篇文章,所以如果这篇文章的格式不好,我很抱歉。因为我不确定到底出了什么问题,所以从这个错误消息中可以看出:PDOStatement::execute():SQLSTATE[HY093]:无效参数号:参数没有在…在行中定义…如何使用stmt绑定参数,使用php pdo将数据从html表单插入mysql数据库,php,html,mysql,forms,pdo,Php,Html,Mysql,Forms,Pdo,我有一个相当大的表单,我正试图用作插入操作的数据。我已经看了好几个小时了:(这是我第一篇文章,所以如果这篇文章的格式不好,我很抱歉。因为我不确定到底出了什么问题,所以从这个错误消息中可以看出:PDOStatement::execute():SQLSTATE[HY093]:无效参数号:参数没有在…在行中定义… 我想知道的事情可能就是问题所在: 由于我在主键上使用了自动递增,我想我不必在那一行中插入任何列的数据。我这样做对吗?如果是,我这样做对吗 我在表中有一个外键,我不想使用html表单数据插入它
我想知道的事情可能就是问题所在:
这是我打印帖子数组时浏览器中的结果:(如果你需要html,我将更新帖子)
数组([firstName]=>Jefferie[middleName]=>Arne[lastName]=>Lidebo[alder]=>27 [variationsNamn]=>Blindhet[diagnosNamn]=>Hjärtfel[harBehandling]=>ja[Medicingan]=> Ipren[harLångHistoria]=>ja[harNedsattImmun]=>ja[missbrukNamn]=>Morfin[address]=>Östra Långgatan 8,1002[postnr]=>47537[ort]=>Skövde[teleNummer]=>000-000-0000[eMail]=> jefferielidebo@gmail.com[notisSätt]=>sms[kommentar]=>我写的评论[submit]=>send)
你有idPat=1的患者吗?如果没有,那肯定会引起问题。嘿!谢谢你的评论。是的,一个患者的id(主键)值为1 intIt现在可以工作了。我将所有的瑞典字母改成了其他常规的“英语字母alpabet”。还更改了插入到列中的顺序。不知道这是否有帮助。我认为是字母。一个问题解决了。只花了我几个小时(
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;
$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*/
}