2015-11-30 21 views
0

這個類在單個數組上完美工作,但是當我添加多維數組時不會工作.i創建自動獲取列名和值的類。其中有演示代碼 數組即將出現這個。如何使用多維數組在php中創建插入查詢

class myform{ 
    public $key; 
    public $value; 
    public $query; 
    public $con; 
    public function __construct(){ 
    $this->con = new mysqli('localhost','root','','form')or die('you are losing your mind');} 
    public function form_values($tablename,$values){ 
    $columns = implode(", ",array_keys($value)); 
    $escaped_values = array_map('esc_sql', array_values($value)); 
    $values = implode("',' ", $escaped_values); 
    foreach($valuee as $key => $valued){  
    $this->query = "INSERT INTO {$tablename} ($columns)VALUES('$valued[$key]')"; 
     } return $this->query; 
    } 
} 

下面是這段代碼的使用

if(isset($_POST['submitt'])){ 
    $new = new myform; 
    $values = $_POST; 
    $query_form = $new->form_values('myguests',$values); 
} 

陣列 (

[objective] => hj 
[full_name] => sdad 
[email] => dsafds 
[phone] => dasfds 
[nationality] => adf 
[date_of_birth] => adsf 
[country] => dsfasd 
[website] => asdfds 
[address] => sadfdsaf 
[my_image_upload_nonce] => 3b17791a4e 
[_wp_http_referer] => /cv_builder/ 
[job_title] => Array 
    (
     [0] => asdfds 
     [1] => adsfdsaf 
    ) 

[company_name] => Array 
    (
     [0] => dasfdaf 
     [1] => asfdsafsd 
    ) 

[comp_other_info] => Array 
    (
     [0] => adsfdsfdsafdsafasdf 
     [1] => adfadfasfdfadsfsdafsadf 
    ) 

[qualification] => Array 
    (
     [0] => adsfddsfasdfdaf 
    ) 

[refrence] => References available upon request. 
[submitt] => submit 

) 我是新來的空中接力的概念,請建議我imporve.Thanks所有

回答

0

通常它是一個不好的主意,允許用戶直接構建y我們對數據庫的查詢。


通過你的情況 - 在法form_values的開頭添加代碼:

foreach($values as $key => $value) { 
    if (!is_string($value)) { 
     //do some stuff. Remove element from array, or convert it to string 
    } 
} 
+0

爲什麼是壞主意? @pastushenko Yuri –

+0

這個解決方案沒有work.error是陣列轉換。 –

0

雅虎......我明白了自己在這裏是解決希望有人能幫助。

class myform{ 
    public $key; 
    public $value; 
    public $query; 
    public $con; 
    public function __construct(){ 
    $this->con = new mysqli('localhost','root','','data') or die('you are losing your mind'); 
           } 

    public function array_implode($array) { 
    if (! is_array($array)) return $array; 
    $string = array(); 
    foreach ($array as $key => $val) { 
     if (is_array($val)) 
      $val = implode(',', $val); 
     $string[] = "{$val}"; 

             } 
    return $string; 

} 
    public function form_values($tablename,$values){ 
// unset($values['sections']); 

    $array = $values; 

    echo '<pre>'; 
    var_export($dg); 
    echo '</pre>'; 

    $columns = implode(", ",array_keys($values)); 
    $escaped_values = array_map('esc_sql', array_values($dg)); 
    $values = implode("',' ", $escaped_values); 
    $this->query = "INSERT INTO {$tablename} ($columns)VALUES($values)"; 
    return $this->query; 
    } 

public function insert_form($query_form){ 


    $stmt = $con->prepare($query_form) or trigger_error("ponka"); 
    $stmt->execute(); 

}  
} 

使用

$new = new myform; 
    $values = $_POST; 
    $final_values = $new->array_implode($values); 
    $query_form = $new->form_values('wp_cv',$final_values); 
    $new->insert_form($query_form);