尝试使用PDO从表单插入数据

Don*_*nny 2 php mysql pdo

我试图从mysql切换到PDO而不是如何解决这个问题我得到了致命的错误:调用未定义的方法PDO :: prepared()在第12行的C:\ wamp\www\Systems\insert_process.php中寻找看看是否有人可以给我一个样本或指出我正确的方向所有教程都告诉我如何插入数据但不提交提交表格.

<?php

$db_host = "localhost";
$db_username = "root";
$db_pass = "";
$db_name = "systems_requests";

$dbh = new PDO('mysql:host='.$db_host.';dbname='.$db_name,$db_username,$db_pass);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

$add_member= $dbh->prepared("INSERT INTO requests(lanId, name, department, manager, request,  request_description, request_comments, status, comments, compUser, compDt) Values (?,?,?,?,?,?,?,?,?,?)");
$add_member->bindParam(1, $_POST["lanId"]);
$add_member->bindParam(2, $_POST["name"]);
$add_member->bindParam(3, $_POST["department"]);
$add_member->bindParam(4, $_POST["manager"]);
$add_member->bindParam(5, $_POST["request"]);
$add_member->bindParam(6, $_POST["request_description"]);
$add_member->bindParam(7, $_POST["request_comments"]);
$add_member->bindParam(8, $_POST["status"]);
$add_member->bindParam(9, $_POST["comments"]);
$add_member->bindParam(10, $_POST["compUser"]);
$add_member->bindParam(11, $_POST["compDt"]);



$dbh->close();

$email = $_POST["emailaddress"]; 

$to = "";
$subject = "Systems Request";
$headers = "From: "; 

$message = "LanID: " . $lanId . " 

" ."User Name: ".  $name ." 

". "Department: " . $department . " 

" ."Manager: ".  $manager . " 

". "User Request: " . $request . "

" ."User Request Description: ".  $request_description .  " 

" ."User Request comments: ".  $request_comments .  "

" ."Status: " .  $status .  " 
 
" ."Systems comments: ".  $comments .  " 
 
" ."Completed by: ".  $compUser ;

mail($to,$subject,$message,$headers); 


echo ("<br> <a href='http://a0319p528/dc399Homepage/'> DC399Homepage </a>");
?>
<html>
<body>
<br><br><br>

<h1 align="center">Systems Request Confirmation</h1>
<p align="center">Thank you, <?php echo $_POST["name"]; ?><br><br>
    Your request has been sent. Your request number is <?php echo $id;?><br>
    Please write this number down or print this page out.</p>

<div align="center">
    <h2>Request Information</h2>
    Date Request: <?php $date = new DateTime();
echo $date->format('m/d/Y H:i:s') . "\n";  ?><br>
    Manager: <?php echo $_POST["manager"]; ?><br>
    Location: <?php echo $_POST["department"];  ?><br>
    Request Issue: <?php echo $_POST["request"];  ?> <?php echo $_POST["request_description"];  ?><br>
    Request Comments: <?php echo $_POST["request_comments"];  ?><br>
</div>
<div align="center">
    <h2>Status Information</h2>
    Status: <?php echo $_POST["status"];  ?><br><br><br><br>
</div>
<div align="center"><button onClick="window.print()">Print this page</button></div>
</body>
</html> 
Run Code Online (Sandbox Code Playgroud)

Fun*_*ner 7

您已经进行了编辑,但没有将其标记为原始问题下的编辑.
这是根据你最初发布的问题,如果有人问为什么(答案).


prepare不是prepared你得到致命错误的原因.

$add_member= $dbh->prepare("INSERT INTO requests ...
Run Code Online (Sandbox Code Playgroud)

另外,你没有执行

加:

$add_member->execute();
Run Code Online (Sandbox Code Playgroud)

$add_member->bindParam(11, $_POST["compDt"]);
Run Code Online (Sandbox Code Playgroud)

按照文档

http://php.net/pdo.prepared-statements

<?php
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (?, ?)");
$stmt->bindParam(1, $name);
$stmt->bindParam(2, $value);

// insert one row
$name = 'one';
$value = 1;
$stmt->execute(); // <=== right there

// insert another row with different values
$name = 'two';
$value = 2;
$stmt->execute();
?>
Run Code Online (Sandbox Code Playgroud)

<?php
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);

// insert one row
$name = 'one';
$value = 1;
$stmt->execute();

// insert another row with different values
$name = 'two';
$value = 2;
$stmt->execute();
?>
Run Code Online (Sandbox Code Playgroud)

编辑并根据您的评论:

"我现在收到此错误警告:PDOStatement :: execute():SQLSTATE [HY093]:参数号无效:绑定变量的数量与C:\ wamp\www\Systems\insert_process.php中的令牌数量不匹配25"

你有11个绑定但只有10个值

(?,?,?,?,?,?,?,?,?,?)
Run Code Online (Sandbox Code Playgroud)

加一个.

(?,?,?,?,?,?,?,?,?,?,?)
Run Code Online (Sandbox Code Playgroud)