オブジェクト/クラスで再び立ち往生。新しい行をチケット テーブルに送信する submitticket という関数があります。
public function submitticket() {
$correct = false;
try {
$con = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
$con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$sql = "INSERT INTO tickets (ticketid, EPMSAccount, requester, recipient, jobnumber, subject, body, responseid, type, priority) VALUES (:ticketid, :EPMSAccount, :requester, :recipient, :jobnumber, :subject, :body, :responseid, :type, :priority)";
$stmt = $con->prepare( $sql );
//print_r($sql);
$stmt->bindValue( "ticketid", $this->ticketid, PDO::PARAM_STR );
$stmt->bindValue( "EPMSAccount", $this->EPMSAccount, PDO::PARAM_STR );
$stmt->bindValue( "requester", $this->requester, PDO::PARAM_STR );
$stmt->bindValue( "recipient", $this->recipient, PDO::PARAM_STR );
$stmt->bindValue( "jobnumber", $this->jobnumber, PDO::PARAM_STR );
$stmt->bindValue( "subject", $this->subject, PDO::PARAM_STR );
$stmt->bindValue( "body", $this->body, PDO::PARAM_STR );
$stmt->bindValue( "responseid", $this->responseid, PDO::PARAM_STR );
$stmt->bindValue( "type", $this->type, PDO::PARAM_STR );
$stmt->bindValue( "priority", $this->priority, PDO::PARAM_STR );
echo '<pre>';
print_r($stmt);
echo '</pre>';
$stmt->execute();
return "Ticket created!";
}catch( PDOException $e ) {
return $e->getMessage();
}
これは私のコードでそれを実行する方法です:
// Submit ticket if submit clicked
if($_POST['submit'] == 'Submit Ticket'){
$_POST['requester'] = $_SESSION['name'];
$_POST['EPMSAccount'] = $_SESSION['EPMSAccount'];
$tkt = new Ticket; // New instance of ticket class
$tkt->storeFormValues( $_POST );
$tkt->storeFormValues( $_SESSION );
$tkt->submitticket();
echo '<pre>';
var_dump($tkt);
print_r ($stmt);
echo '</pre>';
} else {
echo 'nothing attempted';
}
このクエリは正しいはずですが、テーブルに何も書き込んでいません。var_dump と print_r が私に与えているものは次のとおりです。
PDOStatement Object
(
[queryString] => INSERT INTO tickets (ticketid, EPMSAccount, requester, recipient, jobnumber, subject, body, responseid, type, priority) VALUES (:ticketid, :EPMSAccount, :requester, :recipient, :jobnumber, :subject, :body, :responseid, :type, :priority)
)
object(Ticket)#2 (12) {
["ticketid"]=>
NULL
["EPMSAccount"]=>
string(7) "SHAWMUT"
["jobnumber"]=>
string(6) "123456"
["estnumber"]=>
NULL
["requester"]=>
string(14) "Gabriel Peluso"
["recipient"]=>
string(16) "Customer Service"
["subject"]=>
string(4) "2323"
["body"]=>
string(5) "23232"
["order"]=>
NULL
["responseid"]=>
NULL
["type"]=>
NULL
["priority"]=>
string(6) "Normal"
}
バインドされた PDO 値を使用して実際の SQL クエリを表示する方法がわかりません。それを製品化することは可能ですか?なぜテーブルに書き込まないのかを知る方法はありますか?