使用PHP数组将数据插入MYSQL

时间:2013-10-20 14:37:52

标签: php mysql arrays

嗨我试图使用数组在mysql中插入数据,有人可以看看我的代码,我似乎无法使它工作。

这是我的post.php

/* POST.PHP */
$post_id = somefunction();
$title = $_POST['title'];
$body = $_POST['body'];

$myarray = array('','$title','$body','$rowId');
insertToDB($myarray);

这是我的function.php

function insertToDB($myArray) {
    $db = dbConnect(); 
    $query = "INSERT INTO `posts`(`id`, `title`, `body`, `post_id`) VALUES ";
    $valuesArr = $array();

foreach($myarray as $row) {
         $id = (int)$row[0]; // as my primary, auto increment
         $title = mysql_real_escape_string($row[1]);
         $body = mysql_real_escape_string($row[2]);
         $post_id = (int)$row[3];

         $valuesArr[] = "(`id`, `title`, `body`, `post_id`)";
         }

         $sql .=implode(',', $valuesArr);
         $db->query($sql);
}

请注意我的$id = (int)$row[0];是主要和自动增量。

3 个答案:

答案 0 :(得分:2)

使用键和值

构造数组
$myarray = array("id"=>'',"title"=>$title,"body"=>$body,"pid"=>$rowId);

并使用 PDO 代替 mysql _ * 功能(折旧)。

$sql=$dbh->prepare("INSERT INTO `posts`(`id`, `title`, `body`, `post_id`) VALUES (:id,:title,:body,:pid)");
foreach($myarray as $row=>$value){
 $sql->bindValue(":".$row,$value);
}
$sql->execute();

有关 PDO 的更多信息:http://www.php.net/manual/en/book.pdo.php

答案 1 :(得分:0)

in

$ myarray = array('','$ title','$ body','$ rowId');

代码,你不能使用单引号将变量值读入字符串。你必须使用双量化,因为如果你使用单引号,它不会读取变量值,而php会认为它是值本身,

$ myarray = array(“”,“$ title”,“$ body”,“$ rowId”);

这可能对你有帮助......

答案 2 :(得分:0)

事情是:

  • 也许你的代码有一些奇怪的缩进,但第一个定义insertToDB似乎都没有正确关闭(可能是在你提供的代码部分的末尾),也没有return。如果它已正确关闭,它仍然缺少return(它可能有助于您诊断正在发生的事情是否有条件返回成功和错误案例。
  • 您定义$query但稍后不再使用它。除非你追加到那个字符串,把你的数组转换成另一个字符串的结果(我也看不到的东西),我不认为你会向你的数据库发送INSERT任何东西。
  • 您需要遍历$ valuesArr并从数组中构建一个字符串。

也许我错过了什么......