2017-10-14 10 views
-1

コメントのために私のウェブサイトのフォームを送信するたびに、新しいIDだけが作成されます。他の値はすべて空です。名前、電子メール、およびコンテンツにいくつかの属性を作成する必要がありますか? enter image description herePHPでmysqlにテキスト値をアップロードすることはできません

<?php 
error_reporting(E_ALL);ini_set('display_errors',1); 

$servername = "localhost"; 
$username = "seamaszhou"; 
$password = "123456"; 
$dbname = "guest"; 




$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, 
$password); 
// set the PDO error mode to exception 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

// prepare sql and bind parameters 
$stmt = $conn->prepare("INSERT INTO guest 
(guestName,guestEmail,guestContent) 
VALUES (:guestName, :guestEmail, :guestContent)"); 

$stmt->bindParam(':guestName', $guestName); 
$stmt->bindParam(':guestEmail', $guestEmail); 
$stmt->bindParam(':guestContent', $guestContent); 

// insert a row 
$guestName = "$guestName"; 
$guestContent = "$guestContent"; 
$guestEmail = "$guestEmail"; 
$stmt->execute(); 



?> 

HTMLのCODE:enter image description here

+0

あなたのHTMLコードは、そのイメージではありません。実際のコードである必要があります。あなたの投稿をそれぞれ編集してください。 –

+0

あなたはこれも既にhttps://stackoverflow.com/questions/46744068/cant-upload-text-value-to-mysqlに投稿しており、質問は正確な複製としてクローズされています。 –

答えて

2

これは間違っている:

// insert a row 
$guestName = "$guestName"; 
$guestContent = "$guestContent"; 
$guestEmail = "$guestEmail"; 
$stmt->execute(); 

あなたが使用しようとしている変数が存在しません。

$guestName = $_POST['guestName']; 
$guestContent = $_POST['guestContent']; 
$guestEmail = $_POST['guestEmail']; 
$stmt->execute(); 

編集:注フォームが投稿されていない場合でも、すべてのリクエストにこのコードを実行していることをあなたは$_POST配列からフォームによってポストされた値を取得する必要があります。あなたはそのためのチェックを追加することになるでしょう:

if (isset($_POST['guestName']) && isset($_POST['guestContent']) && isset($_POST['guestEmail'])) { 
    $guestName = $_POST['guestName']; 
    $guestContent = $_POST['guestContent']; 
    $guestEmail = $_POST['guestEmail']; 
    $stmt->execute(); 
} 

あなたが開いていないように、実際には、あなたは、そのif -statement内のデータベースにデータを保存するに関係しているすべてのものを置きたいかもしれませんデータベース接続を使用したり、使用しないときにステートメントを準備する必要があります。

+0

私を助けてくれてありがとう。私はあなたが与えたコードを置き換えようとしました。しかし、いくつかのエラーを飛ばしているウェブサイトは言った: 通知:未定義のインデックス:/var/www/htdocs/contact.phpの行25のゲスト名 注意:未定義のインデックス:guestContent /var/www/htdocs/contact.php on行26 Notice:未定義のインデックス:/var/www/htdocs/contact.php 27行目にある –

+0

のANDEatalエラー:メッセージ 'SQLSTATE [23000]:整合性制約違反:1048列' guestName ' /var/www/htdocs/contact.php:28スタックトレース:#0 /var/www/htdocs/contact.php(28):PDOStatement-> execute()#1 {main} throw/var/www/htdocs/contact.php on line 28 –

+0

フォームが実際に投稿されたときだけでなく、リクエストごとにこのコードを実行しているからです。私は私の答えを更新しました。 – rickdenhaan

関連する問題