注意:表插入中的数组到字符串转换

时间:2013-05-17 21:03:20

标签: php mysql

尝试存储来自另一个表的ID值并即时获取

注意:数组转换为字符串

在第

$sql2 = "Insert into relations (id, className) values ($result,'$_POST[className]')";

这是我的代码:

$result = mysqli_query($con,"Select objectID from objects where objectName = '$_POST[relations]'");


if($result === FALSE) {
    die(mysqli_error()); // TODO: better error handling
}

$result = mysqli_fetch_assoc($result);
var_dump($result);

$sql = "Insert into classes (className) values ('$_POST[className]')";
$sql2 = "Insert into relations (id, className) values ($result,'$_POST[className]')";

if (!mysqli_query($con,$sql))
  {
  die('Error: ' . mysqli_error($con));
  }
if (!mysqli_query($con,$sql2))
  {
  die('Error: ' . mysqli_error($con));
  }
print_r($_POST)

我的调试输出为:

array(1) { ["objectID"]=> string(1) "2" } 
Notice: Array to string conversion in C:\xampp\htdocs\matcher\insertclass.php on line 16
Error: Unknown column 'Array' in 'field list'

3 个答案:

答案 0 :(得分:2)

这是你的问题:

$result = mysqli_fetch_assoc($result);
...
$sql2 = "Insert into relations (id, className) values ($result,'$_POST[className]')";
                                                       ^^^^^^^

mysqli_fetch_assoc返回一个数组,然后直接填入另一个字符串。

答案 1 :(得分:0)

var_dump($ _ POST ['className'])在该查询之前产生了什么?另外,$ _POST [className]可能根本不应该解析,因为它可能认为'className'是一个常量。请改写查询中的{$ _POST ['className']}。

答案 2 :(得分:0)

我认为$ result是一个数组

$result['objectID'] => "2"

使用$ result ['objectID']代替$ result

$sql2 = "Insert into relations (id, className) values ($result['objectID'],'$_POST[className]')";