Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用stmt绑定参数,使用php pdo将数据从html表单插入mysql数据库_Php_Html_Mysql_Forms_Pdo - Fatal编程技术网

如何使用stmt绑定参数,使用php pdo将数据从html表单插入mysql数据库

如何使用stmt绑定参数,使用php pdo将数据从html表单插入mysql数据库,php,html,mysql,forms,pdo,Php,Html,Mysql,Forms,Pdo,我有一个相当大的表单,我正试图用作插入操作的数据。我已经看了好几个小时了:(这是我第一篇文章,所以如果这篇文章的格式不好,我很抱歉。因为我不确定到底出了什么问题,所以从这个错误消息中可以看出:PDOStatement::execute():SQLSTATE[HY093]:无效参数号:参数没有在…在行中定义… 我想知道的事情可能就是问题所在: 由于我在主键上使用了自动递增,我想我不必在那一行中插入任何列的数据。我这样做对吗?如果是,我这样做对吗 我在表中有一个外键,我不想使用html表单数据插入它

我有一个相当大的表单,我正试图用作插入操作的数据。我已经看了好几个小时了:(这是我第一篇文章,所以如果这篇文章的格式不好,我很抱歉。因为我不确定到底出了什么问题,所以从这个错误消息中可以看出:PDOStatement::execute():SQLSTATE[HY093]:无效参数号:参数没有在…在行中定义…
我想知道的事情可能就是问题所在:

  • 由于我在主键上使用了自动递增,我想我不必在那一行中插入任何列的数据。我这样做对吗?如果是,我这样做对吗
  • 我在表中有一个外键,我不想使用html表单数据插入它。我在参考表中有一个值为1的“测试输入”输入。我正试图在php代码的第一个注释下面做一些事情
  • 我从google上发现,如果参数和值之间没有正确的匹配,或者没有正确的数量(从db i miss idilog(自动增量)和patient(我不想从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)

  • 我的mysql代码如下所示:

    这是我的php代码:


    你有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*/
        }