2017-04-25 121 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注入攻擊]的風險(http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) 甚至 [如果您正在轉義輸入,它不安全!](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