在MySQL数据库中存储PHP数组的内容

时间:2010-02-22 13:58:08

标签: php mysql

我在mysql中存储数组内容时遇到问题 我使用下面的代码

foreach($found_entry as $key => $sd) {
         echo "$key => $sd <br>";
$insert_found_row = mysql_query("INSERT INTO myTable values ID = \"$sd[0]\" ,Folder = \"NULL\", Tsi = \"$sd[11]\", PT= \"NA\" ") or die(mysql_error());  
            echo "$sd";

如果我回应我得到的值

0 => ST10928
1 =>
2 => 2010-02-19 03:37:16
3 => \\fs1\
4 =>
5 =>
6 =>
7 =>
8 => M1
9 =>
10 =>
11 => LOG1.TXT 

3 个答案:

答案 0 :(得分:3)

您的查询语法错误。使用SET代替VALUES。此外,您可能根本不需要foreach循环,因为您引用了$sd[0]$sd[11]。尝试这样的事情:

$query = sprintf("INSERT INTO
             myTable
         SET
             ID = '%s',
             folder = NULL,
             Tsi = '%s',
             PT = 'NA'",
             mysql_real_escape_string($found_entry[0]),
             mysql_real_escape_string($found_entry[11])
         );

mysql_query($query) or die(mysql_error());

答案 1 :(得分:0)

If I use $sd[0], only the first character is getting displayed.

$ sd是数组的值(例如“ST10928”),但是您将该值视为数组本身,因此$ sd [0]必须只返回第一个元素(= letter)。

如果您尝试将数组中的值插入数据库(而不是遍历数组并对值进行切片),则可能应使用$found_entry[0]而不是$sd[0]和{{1对于$found_entry[11] ??

答案 2 :(得分:0)

使用PHP数组向MySQL添加数据


将数据插入MySQL

在您的代码中,您正在为每个字段执行插入操作。

但是,在大多数情况下,您事先知道字段名称,因此您可以对所有字段执行单个INSERT。

$sql = 'INSERT INTO tbl_name (field_a,field_b,field_c) VALUES('.$found_entry['field_a'].','.$found_entry['field_b'].','.$found_entry['field_c'].');';

这减少了所需的查询数量,从而使您的代码运行更快,并且使用更少的资源。

默认值

当值未知且DB应插入默认值时,您可以传递NULL。