SQLSTATE[42S22]:找不到列:1054 “字段列表”中的未知列“$Valuess”


SQLSTATE[42S22]: Column not found: 1054 Unknown column '$Valuess' in 'field list''

 try {
     $db = new PDO("mysql:host=$host;dbname=$dbname",$user,$password) ;
     $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

     $sqlcollum = array(
                 'First_name'=> 'gaurav',
                 'Last_name' => 'sundaram',
              ) ;
     $Keys = array_keys($sqlcollum) ;
     $Valuess = array_values($sqlcollum) ;
     $Valuess = "'".implode("'", $Valuess)."'" ;

     $db->beginTransaction() ;
    $insert = $db->prepare('INSERT INTO register ($Keys) VALUES ($Valuess)') ;
    $insert->execute() ;
;
    if($insert) {
        echo "true" ;
    } else {
        $db->errorCode() ;
        echo "false" ;
    }
   $db->commit() ;

 } catch(PDOExpection $e) { 
    $db->rollback() ;
    die($e->getMessage()) ;
}

错误是 SQLSTATE[42S22]:找不到列:1054 try2.php:31 中"字段列表"中的未知列"$Valuess"。 什普尔德 我如何正确键入插入语句

只需使用 " 中的字符串

$dbh->prepare("INSERT INTO register ($Keys) VALUES ($Valuess)")

因为内部 '' 变量的行为类似于字符串,但在 " 变量内部获取值。

也改变

 $Valuess = "'".implode("','", $Valuess)."'" ;

值必须用逗号内爆,如"gaurav","sundaram">

改用 bindParam - PHP 文档中的一个例子:

<?php
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);
// insert one row
$name = 'one';
$value = 1;
$stmt->execute();
// insert another row with different values
$name = 'two';
$value = 2;
$stmt->execute();
?>