0

嗨,我正在尝试使用数组在 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];的主要和自动增量。

4

3 回答 3

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

于 2013-10-20T14:43:29.660 回答
0

事情是:

  • 也许您的代码有一些奇怪的缩进,但第一个定义insertToDB似乎没有正确关闭(也许是,在您提供的代码部分的末尾),也没有return. 如果它被正确关闭,它仍然缺少一个return(它可以帮助您诊断正在发生的事情有条件返回成功和错误情况。
  • 您定义$query但以后不要使用它。除非您将将数组转换为另一个字符串的结果附加到该字符串(我也没有看到),否则我认为您不会INSERT对数据库进行任何操作。
  • 您需要遍历 $valuesArr 并从您的数组中构建一个字符串。

也许我错过了一些东西......

于 2013-10-20T14:45:54.380 回答
0

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

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

尝试

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

这可能会帮助你...

于 2013-10-20T14:45:01.340 回答