2013-10-20 66 views
0

嗨即時嘗試插入數據在MySQL中使用數組,可有人請看看我的代碼,我似乎無法使它的工作。使用PHP數組插入數據到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];是主要的汽車增量。

+0

這需要基本的d ebugging。你的查詢是什麼樣的,你從數據庫中得到了什麼錯誤信息? –

回答

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(); 

有關PDOhttp://www.php.net/manual/en/book.pdo.php

+0

如何在使用PDO時進行調試?我不能使它工作。 – bobbyjones

0

$ myArray的=陣列( '','$標題', '$體', '$ ROWID');

代碼,您不能使用單引號讀取字符串中的變量值。您必須使用雙quatations對於這一點,因爲如果使用單引號,它不讀變量值,和PHP認爲其本身的價值,

嘗試

$ myArray的=陣列(「」 「$稱號「,」$ body「,」$ rowId「);

這可能會幫助你...

0

的事情是:

  • 也許你的代碼中有一些奇怪的縮進,但第一個定義insertToDB它們似乎也沒有正確關閉(也許是,在您提供的代碼部分結束),也沒有return。如果它正確關閉,它仍然缺少一個return(它可能會幫助您診斷髮生了什麼事情有成功和錯誤情況的條件返回
  • 您定義$query但稍後不要使用它除非您附加到該字符串將你的數組轉換成另一個字符串的結果(我看不到任何東西),我不認爲你要去INSERT任何東西到你的數據庫。
  • 你需要通過$ valuesArr循環並從你的數組中建立一個字符串

也許我失去了一些東西...