我在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
答案 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)
将数据插入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。