2017-04-25 122 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