2015-02-12 4 views
-3

Это может быть очень простым, для некоторых из вас, но я действительно не мог понять это @ @PHP - вставить переменные данные взрываться

Я хочу, чтобы вставить $x этой линии: (".implode(",",array_keys($data)).") и $rid. в $values = implode("','", array_values($data));

Код:

if(count($data)){ 
    $x = "rid"; 
    $rid=$_SESSION['rid']; 
    $values = implode("','", array_values($data)); 
    mysql_query("insert into appetizer (".implode(",",array_keys($data)).") values ('".$values."')"); 

    if(mysql_insert_id()) return mysql_insert_id(); 
    return 0; 
} 

Как возможно это сделать?

Извинения к нуб вопрос: 3

+0

, что именно вы пытаетесь сделать? –

+0

Мы не понимаем, что вы подразумеваете под «insert (variable) to (строка кода)». Не могли бы вы немного подправить и попытаться объяснить свою цель - какой * эффект * вы хотите, чтобы этот код имел, что еще не происходит? – zwol

ответ

2

Если вы хотите, чтобы раздвинуть эти значения и сделать его значение пара ключей и не виду любой заказ, нажмите назначить его соответствующим образом.

Нажимайте значение при его массиве, а затем взорвите. Нет необходимости вносить изменения в вискозную строку.

if(count($data) > 0){ 
    // key-pair values to be appended 
    $x = "rid"; // the key 
    $rid = $_SESSION['rid']; // the value 

    $data[$x] = $rid; // just assign 

    $values = implode("','", array_values($data)); 
    mysql_query("INSERT INTO appetizer (".implode(",",array_keys($data)).") values ('".$values."')"); 

    return mysql_insert_id(); 
} 

Я настоятельно рекомендую использовать более новый API, MySQLi или PDO.

if(count($data) > 0){ 
    // key-pair values to be appended 
    $x = "rid"; // the key 
    $rid = $_SESSION['rid']; // the value 

    $data = array_merge(array($x => $rid), $data); 

    $keys = array_keys($data); 
    $values = array_values($data); 

    $sql = 'INSERT INTO appetizer (' . implode(',', $keys) . ') VALUES (' . rtrim(str_repeat('?, ', count($keys)), ', ') . ')'; 

    $db = new PDO('mysql:host=localhost;dbname=database_name', 'username', 'password'); 
    $insert = $db->prepare($sql); 
    $insert->execute($values); 

    return $db->lastInsertId(); 
} 

Sidenote: Если вы хотите ID быть первым, то другой способ может быть использован:

$data = array_merge(array($x => $rid), $data); 
+0

Что делать, если я хочу, чтобы это значение было в самом начале? – serendipochi

+1

@serendipochi многочисленные способы, могли объединиться или сменить – Ghost

Смежные вопросы