SQLSTATE [42S22]:未找到列:1054未知列' $ Valuess'在'字段列表''

时间:2016-01-06 11:53:00

标签: php mysql pdo

 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未知列' $ Valuess'在'字段列表''在try2.php中:31。如何shpuld我正确输入插入语句

2 个答案:

答案 0 :(得分:0)

使用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();
?>

答案 1 :(得分:0)

只需使用“”

中的字符串即可
$dbh->prepare("INSERT INTO register ($Keys) VALUES ($Valuess)")

因为内部''变量的行为类似于字符串,但在内部“”变量值被提取。

同时更改

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

值必须使用逗号“gaurav”,“sundaram”

进行内爆