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

在MySQL数据库中存储PHP数组的内容,php,mysql,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 di

我在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";

如果使用$sd[0],则只显示第一个字符。

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


如果您试图将数组中的值插入数据库(而不是遍历数组并对值进行切片),那么您可能应该使用
$found\u entry[0]
而不是
$sd[0]
$found\u entry[11]
来查询
$sd[11]

您的查询语法错误。使用
设置
而不是
。另外,您可能根本不需要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());
使用PHP数组向MySQL添加数据

将数据插入MySQL

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

但是,在大多数情况下,您事先知道字段名,因此可以对所有字段进行一次插入

$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。

那么实际上它有什么问题吗?如果我使用
$sd[0]
,只显示第一个字符。您会得到什么错误?此外,您的数据库布局也会有所帮助。我猜您在转义数据时遇到了问题,但是没有更多的信息,这很难说。是的,您是对的$sd是数组的值,但我在每个循环中得到不同的值,我不知道如何在mysqlI的不同字段中存储这些不同的值。我编辑了我的答案,尝试使用$found_entry而不是$sd,并更改循环以执行每个“$found_entry”的查询。
$sql = 'INSERT INTO tbl_name (field_a,field_b,field_c) VALUES('.$found_entry['field_a'].','.$found_entry['field_b'].','.$found_entry['field_c'].');';