2015-05-28 3 views
0

Я пытаюсь обновить базу данных с помощью массивов, но я не могу этого сделать. Я могу обновить его только с помощью строк и чисел, но не массивов. Затем я попытался отобразить строку, число И массив, чтобы увидеть, допустил ли я ошибку при создании массива. Пожалуйста, обратите внимание:Обновление базы данных с использованием массивов

$string = "string"; 
$num = 10; 
$array[0][0] = "array"; 

echo $string."</br>"; 
echo $num."</br>"; 
echo $array[0][0]."</br>"; 

выход:

string 
10 
array 

Но вставки данных в таблицу, используя MySQL:

$table = "userLogin"; 
$column = "username"; 

Использование строки:

$query= "INSERT INTO $table($column)VALUES($string)"; 
$result = mysql_query($query); 

Вывод в таблице :

string 

Использование номер:

$query= "INSERT INTO $table($column)VALUES($number)"; 
$result = mysql_query($query); 

Выход в таблице:

10 

Но когда вы используете массив:

$query= "INSERT INTO $table($column)VALUES($array[0][0])"; 
$result = mysql_query($query); 

Выходной в таблице:

Без изменений. Почему это? Я полагаю, что, поскольку все строки, числа и массивы могут быть эхом, используя команду echo, они могут использоваться также при обновлении базы данных. Но похоже, что вы можете обновлять их только с помощью строк и чисел. Если я не сделаю что-то не так. Если я сделаю что-то не так, пожалуйста, дайте мне знать. Спасибо.

+1

Вы пытались использовать фигурные скобки? '$ query =" INSERT INTO $ table ($ column) VALUES ({$ array [0] [0]}); "Кстати, если эти переменные содержат пользовательский ввод, лучше использовать подготовленные инструкции для предотвращения SQL-инъекции. –

+0

** ПРЕДУПРЕЖДЕНИЕ **: 'mysql_query' является устаревшим интерфейсом и не должен использоваться в новых приложениях, поскольку он удаляется в будущих версиях PHP. Современная замена, такая как [PDO, не трудно учиться] (http: //net.tutsplus.ком/учебники/PHP/почему вы-должны-быть с использованием-ПГПС-PDO-для-доступа к базам данных /). Если вы новичок в PHP, руководство, подобное [PHP The Right Way] (http://www.phptherightway.com/), может помочь объяснить лучшие практики. – tadman

+0

'echo $ array."
";' он не показывает какое-либо уведомление php, подобное этому. Обратите внимание: массив для преобразования строк, потому что вы не можете эхо-массива –

ответ

1

PHP arrays-in-strings 201 (промежуточный уровень): PHP-синтаксический анализатор не является жадным и по умолчанию будет игнорировать многомерные ссылки массива внутри строк с двойными кавычками.

например.

$foo = array(); 
$foo[0] = array(); 
$foo[0][1] = 'bar'; 

echo $foo;   // output: Array 
echo "$foo[0]"  // output: Array 
echo "$foo[0][1]" // output: Array[1] 
echo "{$foo[0][1]}" // output: bar 
     ^----------^ 
echo $foo[0][1]  // output: bar 

Если вы хотите использовать многомерные массивы в двойных кавычках, то, как и выше, у вас есть два выбора: Не, сцепить их в строку; или используйте нотацию {}, чтобы заставить PHP разбирать ссылку ENTIRE array, а не только первое измерение.

Специфики вашей проблемы:

$query= "INSERT INTO $table($column)VALUES($array[0][0])"; 

фактически становится

$query= "INSERT INTO $table($column)VALUES(Array[0])"; 
              ^^^^^ 

где Array неизвестным/имя недопустимого поля и [0] является утончается ошибкой синтаксиса.