Привет, я пытаюсь вставить данные в mysql, используя массив, может кто-то посмотреть мой код, я не могу заставить его работать.
это мой post.php
/* POST.PHP */ $post_id = somefunction(); $title = $_POST['title']; $body = $_POST['body']; $myarray = array('','$title','$body','$rowId'); insertToDB($myarray);
и это внутри моей функции.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); }
обратите внимание, что my $id = (int)$row[0];
является основным и автоматическим приращением.
Построить массив с ключом и значением
$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
в
$ myarray = array ('', '$ title', '$ body', '$ rowId' );
кода, вы не можете использовать одинарные кавычки для чтения значений переменных в строке. вы должны использовать двойные quatations для этого, потому что, если вы используете одинарную котировку, она не читает значение переменной, а php думает о ее самом значении,
пытаться
$ myarray = array ("", "$ title", "$ body", "$ rowId" );
это может помочь вам …
Дело в том:
insertToDB
не выглядит должным образом закрытым (возможно, это в конце предоставленного вами раздела кода) и не имеет return
. Если он правильно закрыт, ему по-прежнему не хватает return
(это может помочь вам диагностировать происходящее, иметь условный возврат для успеха и ошибки. $query
но не используете его позже. Если вы не присоедините к этой строке результат преобразования вашего массива в другую строку (вещь, которую я тоже не вижу), я не думаю, что вы собираетесь INSERT
что-нибудь в вашу базу данных. Может быть, я что-то упустил …