【问题标题】:Inserting php array data into mysql isn't working将php数组数据插入mysql不起作用
【发布时间】:2009-10-18 19:44:31
【问题描述】:

您好,我有一个数组 $name[],我试图将它插入到我的表格的第二个字段中,但它不起作用(表格仍然完全空白)。我在我的代码中找不到错误我做错了什么?

$username="us";
$password="pw";
$database="db";
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "error");

$i=0;
while ($i < 5) {


$query = "INSERT INTO table VALUES ('','$name[i]','','')";
mysql_query($query);

$i++
}

mysql_close();

有什么想法吗?谢谢。

【问题讨论】:

  • Protip:使用 for 循环将为您节省 2 行代码。对于 ($i = 0; $i
  • 这解决了它。上面的while循环中有错误,不知道是什么。但是用 for 循环替换 while 循环就解决了。
  • 我认为 btw 是 $i++ 的错误缺少 ;之后。

标签: php mysql arrays


【解决方案1】:

您使用常量i 而不是$i 作为$name 的键。所以试试这个:

"INSERT INTO table VALUES ('','".$name[$i]."','','')"

您还应该使用 mysql_real_escape_string 转义 MySQL 查询的值:

"INSERT INTO table VALUES ('','".mysql_real_escape_string($name[$i])."','','')"

【讨论】:

  • 或者这个:"INSERT INTO table VALUES ('','{$name[$i]}','','')"
【解决方案2】:

首先,所有要做的就是将第 1、3 和 4 列的条目设为空白,并将第 2 列的值设为 $name[i]。要在字符串中包含变量,它需要用双引号引起来。但是当你可以只拥有变量时,我看不出这样做的意义。

另外,$name[i] 应该是 $name[$i]

【讨论】:

  • 我将其更改为 $name[$i] 并没有任何区别。我现在将其他列留空,因为我尝试只输入一列数据,当它工作时,我可以将其他数组放入列中。
【解决方案3】:

当你连接这样的查询时,一定要转义。

$query = "INSERT INTO table VALUES ('', '" .mysql_real_escape_string($name[$i]) . "', '', '')";

如果你不这样做,你可能会受到SQL injection badness 的影响

【讨论】:

    【解决方案4】:

    尝试像这样运行查询:

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

    如果您的查询有问题,这将使您更好地了解您做错了什么。您可能还想打印您的 SQL 以进行调试:

    echo "Query $i: $query<br />"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-21
      • 1970-01-01
      相关资源
      最近更新 更多