2010-08-11 30 views
1

最好如何处理此任务?stmt-> bind_params动态? PHP

require_once('models/databaseModel.class.php'); 

class crudModel extends databaseModel{ 

    public function __construct(){ 
    parent::__construct(); 
    } 

    public static function create(&$data, $tbl){ 

    // TEST $data array 
    // $data = array('name'=>'philip','email'=>'[email protected]','age'=>28); 

    //This is how I would like $value1 
    // ":$name', ':$age', ':$email' "; 

    //This is how I would like $value2 
    // "ssi";  

    //MY TEST 
    $params = array(); 

    $results = array(); 

    foreach($data as $k => $v){ 
    if(is_string($v)){ 
    $params = 's'; 
    } 
    if(is_int($v)){ 
    $params = 'i'; 
    } 

    $results = array_fill(0, count($v), $params); 

    if(is_array($results)){ 
    $value2 = implode('', $results); 
    } 
    } 

    $sql = "INSERT INTO $tbl('".implode(',', array_keys($data))."')VALUES('".$value1."')"; 
    $stmt = $link->prepare($sql); 
    $stmt->bind_params($value2, $value1); 
    $stmt->execute(); 

    } 


} 
+2

嘿。如果你向我们解释你正在做什么以及问题发生在哪里,那可能会更好。 – 2010-08-11 15:42:33

回答

0

试着这么做

$columns = implode(',', array_keys($data)); 
$values = array_values($data); 
$placeHolders = trim(str_repeat('?,', count($values)), ','); 
$sql = "INSERT INTO {$tbl}({$columns}) VALUES({$placeHolders})"; 
$stmt = $link->prepare($sql); 
$stmt->execute($values); 

// FETCH DATA...