首页 > 解决方案 > 在配置文件用户中从 MySQL 打印用户数据

问题描述

我正在尝试将用户输入的数据打印到个人资料站点,但是有问题我无法弄清楚为什么会出现此错误

致命错误:未捕获的 PDOException:SQLSTATE [HY093]:无效参数编号:参数未在 /home2-1/n/noorja/public_html/WSK12021/OTIUM-backup/OTIUM02-sandbox/profile.php:49 堆栈跟踪:# 0 /home2-1/n/noorja/public_html/WSK12021/OTIUM-backup/OTIUM02-sandbox/profile.php(49): PDOStatement->execute(Array) #1 {main} 抛出 /home2-1/n/ noorja/public_html/WSK12021/OTIUM-backup/OTIUM02-sandbox/profile.php 在第 49 行

我应该怎么办....

在 prfile.php 中打印表格的代码:

<h2>Report</h2>
<?php
//kirjautuneen käyttäjän userID?
    $data1['email'] = $_SESSION['semail'];
    
    //var_dump($data1);
    $sql1 = "SELECT id FROM otium where email =  :email";
    $kysely1=$DBH->prepare($sql1);
    $kysely1->execute($data1);
    $tulos1=$kysely1->fetch();
    $currentUserID=$tulos1[0];

    // Print out calnder data, what currentUser has inputted
$data3['title'] = $currentUserID;
$sql3 = "SELECT 'title', 'start' FROM tbl_events WHERE userID = :userID  DESC LIMIT 30";
$kysely3=$DBH->prepare($sql3);
$kysely3->execute($data3);              

    echo("<table>
        <tr>
            <th>Diary input</th>
      <th>Input date</th>
        </tr>");
    
        while   ($row=$kysely3->fetch()){   
                echo("<tr><td>".$row["title"]."</td>
                <td>".$row["start"]."</td>
                </tr>");
        }
    
  echo("</table>");
  
?>

这样我在我的 calendar.php 中添加事件

<?php session_start(); ?>
<?php

    require_once "db.php";

    $title = isset($_POST['title']) ? $_POST['title'] : "";
    $start = isset($_POST['start']) ? $_POST['start'] : "";
    $end = isset($_POST['end']) ? $_POST['end'] : "";


//kirjautuneen käyttäjän userID?
$data2['email'] = $_SESSION['semail'];
//var_dump($data1);
$sql1 = "SELECT id FROM otium where email =  :email";
$kysely1 = $DBH->prepare($sql1);
$kysely1->execute($data2);
$tulos1 = $kysely1->fetch();

$data1['userID']=$tulos1[0];

    try { 
    //Tiedot kantaan

        $data1['title'] = $_POST['title'];
        $data1['start'] = $_POST['start'];
        $data1['end'] = $_POST['end'];

        $STH = $DBH->prepare("INSERT INTO tbl_events (title, start, end, userID) VALUES (:title, :start, :end, :userID);");
        $STH->execute($data1);


    file_put_contents('log/DBErrors.txt', "Merkintä on:"  . $title . "  " . $start . "  " . $end . "  " .' id '.$data1['userID'].' email '.$_SESSION['semail']);
    if (! $result) {
        $result = mysqli_error($DBH);
    }

    } catch(PDOException $e) {
        echo "Yhteysvirhe: " . $e->getMessage(); 
        file_put_contents('log/DBErrors.txt', 'Connection: '.$e->getMessage()."\n", FILE_APPEND);
    }

?>

标签: phpmysqlpdo

解决方案


问题是在我使用的旧代码中title

// Print out calnder data, what currentUser has inputted
$data3['title'] = $currentUserID;
$sql3 = "SELECT title, start FROM tbl_events WHERE userID = :userID";
$kysely3=$DBH->prepare($sql3);
$kysely3->execute($data3);  

更新版本有userID

// Print out calnder data, what currentUser has inputted
$data3['userID'] = $currentUserID;
$sql3 = "SELECT title, start FROM tbl_events WHERE userID = :userID";
$kysely3=$DBH->prepare($sql3);
$kysely3->execute($data3);  

推荐阅读