bindValue不起作用

时间:2015-10-02 18:41:11

标签: php mysql pdo mariadb

将PDO与MariaDB服务器配合使用。我无法理解为什么这段代码不起作用。每当我有:值的值,它给我一个错误“无效的参数号:参数未定义”

    $sql = "INSERT INTO table (USER, DOMAIN,FLG) VALUES (:username,:domain,:flag)";
    $stmt = $dbh->prepare($sql);
    $stmt->bindValue(':username', $username);
    $stmt->bindValue(':domain', $domain);
    $stmt->bindValue(':flag', $flag);       
    $stmt->execute();

但是下面的代码确实有效。

    $sql = "INSERT INTO table (USER, DOMAIN,FLG) VALUES (?,?,?)";
    $stmt = $dbh->prepare($sql);
    $stmt->bindValue(1, $username);
    $stmt->bindValue(2, $domain);
    $stmt->bindValue(3, $flag);       
    $stmt->execute();

以下是此代码的其余部分。

    if(isset($_POST['addEditor'])){
    $username = $_POST['formUsername'];
    $domain = $_POST['formDomain'];
    $flag = $_POST['formflg'];

    $sql = "INSERT INTO table (USER, DOMAIN,FLG) VALUES (:username,:domain,:flag)";
    $stmt = $dbh->prepare($sql);
    $stmt->bindValue(':username', $username);
    $stmt->bindValue(':domain', $domain);
    $stmt->bindValue(':flag', $flag);       
    $stmt->execute();


  try{                
    $stmt->execute();           
  }
  catch (Exception $e) {
    die ('ERROR: ' . $e->getMessage());
  }

3 个答案:

答案 0 :(得分:0)

该代码适用于我,已阅读有关PDO here

的内容
$dbh = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);
$username='a';
$domain ='b';
$flag ='c';
$sql = "INSERT INTO `table` (`USER`, `DOMAIN`, `FLG`) VALUES (:username,:domain,:flag)";
$stmt = $dbh->prepare($sql);
$stmt->execute(
  array(':username'=> $username,
    ':domain'=> $domain,
    ':flag'=> $flag)
  );

答案 1 :(得分:0)

  

我无法理解为什么这段代码不起作用。

难怪,因为你使用错误的方式来理解。

在代码中删除所有 trycatch运算符,再次运行,然后阅读完整错误消息,让你理解哪些代码不起作用。

答案 2 :(得分:0)

if($_POST)
{
$role ="student";



 try{

    $stmt = $db_con->prepare("INSERT INTO userinfo (role)
            VALUES(:qrole)");
        $stmt->bindParam(":qrole", $role);


        if($stmt->execute())
        {
            echo "Successfully Added";
        }
        else{
            echo "Query Problem";
        }   
    }
    catch(PDOException $e){
        echo $e->getMessage();
    }
}

试试这个,如果发生了一些错误,它将使用catch

发布