Mysql Вопрос по составлению строки запроса

codrilla

Новичок
Здравствуйте, ситуация такая:
есть переменная
PHP:
$attr_array = array ('title'=>'Full title', 'text'=>'Some text....')
есть таблица
id|title|text
Никак не могу сообразить, как написать запрос insert
PHP:
$mysqli->query("INSERT INTO $table_name ...")
То же самое и с update. Сложность состоит в том, что запрос должен формироваться в зависимости от содержимого ассоциативного массива $attr_array. Помогите разобраться с этим. Заранее спасибо.
 

С.

Продвинутый новичок
В чем проблема? Не умеешь пользоваться массивами?
 

codrilla

Новичок
Может и не умею. Пока в голове родилась такая мысль :
PHP:
        foreach ($attr_array as $k => $v)
		{
			$table_names = "$k,";//убрать последнюю запятую
			$values = "'$v',";//убрать последнюю запятую
		}
        
        $result = $this->mysqli->query("INSERT INTO $table_name ($table_names) VALUES ($values)");
Сейчас додумаю и напишу, что получилось.

Просто думал, что может есть что-то на подобие extract. Да и эта запятая в конце мне не нравится.
 

codrilla

Новичок
PHP:
       foreach ($attr_array as $k => $v)
		{
			$col_names = "$k,";
            $col_names = substr($col_names, 0, -1);//убрать последнюю запятую
			$values = "'$v',";
            $values = substr($values, 0, -1);//убрать последнюю запятую
		}
        
        $result = $this->mysqli->query("INSERT INTO $table_name ($col_names) VALUES ($values)");
Либо
PHP:
$columns = array_keys($attr_array);
$values = array_values($attr_array);

$columns  = array_map(function($val){return '`'.$key.'`';}, $columns);
$values = array_map(function($val){return mysqli_real_escape_string($val);}, $values );


$result = $this->mysqli->query("INSERT INTO $table_name ('.join(',',$columns).') VALUES ('.join(',',$values).')");
 

С.

Продвинутый новичок
На самом деле вопрос же не имеет отношения к SQL, правда? Нужно просто получить строку с перечисленными элементами массива (при необходимости с рюшечками).
 
Сверху