Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php bindValue不工作_Php_Mysql_Pdo_Mariadb - Fatal编程技术网

Php bindValue不工作

Php bindValue不工作,php,mysql,pdo,mariadb,Php,Mysql,Pdo,Mariadb,在MariaDB服务器上使用PDO。我很难理解为什么这个代码不起作用。每当我有:值时,它就会给我一个错误“无效参数编号:未定义参数” 但是下面的代码确实有效 $sql = "INSERT INTO table (USER, DOMAIN,FLG) VALUES (?,?,?)"; $stmt = $dbh->prepare($sql); $stmt->bindValue(1, $username); $stmt->bindValue(2, $do

在MariaDB服务器上使用PDO。我很难理解为什么这个代码不起作用。每当我有:值时,它就会给我一个错误“无效参数编号:未定义参数”

但是下面的代码确实有效

    $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());
  }

那个代码对我有用我读过一些关于

我很难理解为什么这个代码不起作用

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

去掉代码中的所有
try
catch
运算符,再次运行,然后阅读完整的错误消息,这将使您了解哪些代码不起作用

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来发布它,而不是使用
bindParam()
。我试过使用bindParam(),但得到了相同的错误。这是真正的代码吗?检查这个,
如果(!$stmt->execute()){print\r($stmt->errorInfo());}
给我们完整的代码片段。此消息来自何处?无效参数编号:未定义参数?数据库正在引发错误。我添加了更多的代码。也许这将有助于解决这个问题。提前谢谢!这段代码似乎适合MySQL,但他使用的是mariaBD,可能有些不同。
$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)
  );
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();
    }
}