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我正确输入插入语句
答案 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”
进行内爆