使用数组更新数据库

时间:2015-05-28 18:53:56

标签: php mysql arrays multidimensional-array sql-insert

我尝试使用数组更新数据库,但我似乎无法做到这一点。我只能使用字符串和数字更新它,但不能使用数组。然后我试着回声出字符串,数字和数组,只是为了看看我是否在制作数组时犯了错误。请看一下:

$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 个答案:

答案 0 :(得分:1)

PHP array-in-strings 201(中级):PHP的字符串解析器不贪心,默认情况下会忽略双引号字符串中的多维数组引用。

e.g。

$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解析整个数组引用,而不仅仅是第一维。

问题的具体细节:

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

实际上变成了

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

其中Array是未知/无效的字段名称,而[0]是一个完整的语法错误。