2017-04-25 5 views
-4

phpmyadminテーブルにデータを挿入したいのですが、同じコードが別のページで動作しましたが、このテーブルでは機能しませんでした。コードは次のとおりです。phpmyadminテーブルへのデータの挿入

<?php 
$hostname = 'localhost'; 
$username = 'root'; 
$password = ''; 
try { 
    $conn = new PDO("mysql:host=$hostname;dbname=database", $username, $password); 
    $conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 
    echo "Connected successfully"; 
} 
catch (PDOException $e) { 

    echo $e->getMessage(); 

} 

if (isset($_POST['NomPrenom']) && isset($_POST['date']) && isset($_POST['email']) && isset($_POST['description'])) { 
    $NomPrenom  = $_POST['NomPrenom']; 
    $date   = $_POST['date']; 
    $email   = $_POST['email']; 
    $description = $_POST['description']; 

    try { 

     $sql = "INSERT INTO demande (NomPrenom,date,email,description) 
          VALUES ('$NomPrenom','$date','$email','$description')"; 
     $stmt = $conn->prepare($sql); 
     if ($stmt->execute(array(
      $NomPrenom, 
      $date, 
      $email, 
      $description 
     ))) { 

      echo "Data inserted"; 
     } else { 

      echo "could not insert"; 
     } 
    } 
    catch (Exception $ex) { 
     error_log($ex->getMessage()); 
    } 
} 
?> 

私はページを更新してもエラーはなく、テーブルに何も追加されません。 これは table named demande

+4

'phpMyAdmin'は、テーブルを持っていない、そのアプリケーションのように、名前付きパラメータを使用して!しかし、「MySQL」にはテーブルがあります。 – RiggsFolly

+0

あなたのスクリプトは[SQL Injection Attack]の危険にさらされています(http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) Even [入力をエスケープする場合、その安全ではありません!](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) [準備パラメータ化されたステートメント](http:// php .net/manual/en/mysqli.quickstart.prepared-statements.php) – RiggsFolly

+1

あなたは準備文を正しく使用していません。あなたのクエリは無効です。 –

答えて

0

あなたのクエリが誤って構築されたデータベース内のテーブルで、あなたが準備してから実行する上でこれらのパラメータの値を渡ししようとしているクエリ内の位置パラメータを配置する必要があります。

$sql = "INSERT INTO demande (NomPrenom,date,email,description) 
        VALUES (?,?,?,?)"; 
$stmt = $conn->prepare($sql); 
if ($stmt->execute(array($NomPrenom,$date,$email,$description))) { 
    echo "Data inserted"; 
} else { 
    echo "could not insert"; 
} 

またはこの

$sql = "INSERT INTO demande (NomPrenom,date,email,description) 
        VALUES (:nom, :dat, :em, :desc)"; 
$stmt = $conn->prepare($sql); 
$params = array(':nom'=>$NomPrenom, 
       ':dat'=>$date, 
       ':em'=>$email, 
       ':desc'=>$description); 

if ($stmt->execute($params)) { 
    echo "Data inserted"; 
} else { 
    echo "could not insert"; 
} 
+0

それは働いた!迅速な回答と解決に感謝します。 私はより多くのクエリステートメントを勉強しています。 – Darkimo

関連する問題