【问题标题】:PDO insert and select statementPDO 插入和选择语句
【发布时间】:2016-08-30 14:24:52
【问题描述】:

我正在尝试使用 PDO 执行选择和插入语句。正如你所看到的,我已经成功地创建了一个插入用户的查询,并且我已经成功添加了一条消息左节点 1。但是,这里的问题是当我查看 sql 数据库时。没有我的数据记录。我做了一个 echo 语句,看来我的变量输出正确。

<?php
include("connection.php");
if (isset($_POST['btn-signup'])) {
      $uname        = trim($_POST['user_name']);
      $uic        = trim($_POST['user_ic']);
      $email        = trim($_POST['user_email']);
      $upass        = trim($_POST['password']);

      $new_password = password_hash($upass, PASSWORD_DEFAULT);

     $query = $dbh->prepare("select * from users");
       $query->execute();   
    if($query){
          while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
              $enroller_id3 = $row['enroller_ID'];
              $test         = "left_mem";
            $test2        = "right_mem";
            $direc        = $direction;
          }
    }


?>

【问题讨论】:

  • 你很容易受到sql injection attacks
  • 您使用了两次 :enrolled_id_n, :enroller_id_n --- ":enrolled_id_n" =&gt; $enrolled_id_n, ":enroller_id_n"=&gt; $enroller_id_n, 并且可能由于重复条目的限制而出错。
  • 你也没有执行$sql = "insert into personally_enrolled...你只是准备好了。

标签: php mysql pdo


【解决方案1】:

您的代码有很多错误:

   $query->execute();   
if($query){

$query 是您的语句句柄,并且始终为“真”。如果execute() 失败,它返回这个事实。 $query 不会神奇地变成false。

你应该有:

$result = $query->execute();
if(!$result) {

那么你有这个:

$query1 = "INSERT INTO users
     (user_Name, user_ID, user_Email, user_Pass, enrolled_ID, enroller_ID, enroller_Postion, direction, country)
 VALUES
     (:uname,               :email, :new_password,:enrolled_id_n,
                :enroller_id_n, :uposition, :direc, :ucountry)";

看到里面有什么遗漏了吗?您有 9 个字段和 8 个参数。由于您不费心检查查询是否成功,因此您对操作是否成功撒谎。

【讨论】:

  • 另外,$sql = "insert into personally_enrolled... 只是准备好了,从不执行。
  • 没有用户 ID 自动递增。因此我没有为它输入任何参数字段,但它实际上添加成功
  • 不可能。 PDO 应该因字段/值不匹配和/或绑定到参数错误的值不足而失败。字段和值以 1:1 匹配。 mysql 不会“神奇地”跳过 :uname->:email 并为您填写 user_ID。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-12
  • 1970-01-01
  • 1970-01-01
  • 2017-05-29
  • 1970-01-01
  • 2016-03-02
  • 1970-01-01
相关资源
最近更新 更多