2016-01-06 63 views
0
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'in'field list ''在try2.php:31。

<?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(); 
?> 
+0

放插入查詢在雙引號(「) –

+2

的可能的複製逗號崩盤:HTTP://計算器。 com/questions/34630140/sqlstate42s22-column-not-found-1054-unknown-column-value-in-field-list/34630192#34630192 – DonCallisto

+0

@DonCallisto沒有正確的答案 – gaurav

回答

0

只要用裏面的字符串 「」

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

因爲喜歡裏面'變量的行爲:從PHP文檔的例子 - 我如何shpuld鍵入INSERT語句正確

+0

新錯誤SQLSTATE [42000]:語法錯誤或訪問衝突: – gaurav

+0

這是否工作? – Vegeta

+0

你是對的,但也需要這個'$ keys = implode(「,」,Keys);' – gaurav

0

使用bindParam代替字符串,但內部「」變量值被提取。

而且改變

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

值必須與像 '拉夫', '孫達拉姆'

+0

爲最佳陣列或BindParam與 – gaurav

相關問題