2011-07-29 57 views
0

在我的数据库,我有以下模式:JSONKit - 解析JSON字符串的PHP MYSQL数据库

答案:

answerId(PK) auto_inc 
answer 
questionId 

我传递了以下JSON字符串到我的PHP文件:

[{"answer":"bnk","questionId":"1"},{"answer":"1","questionId":"2"},{"answer":"b n","questionId":"3"},{"answer":"3","questionId":"4"},{"answer":"rgb","questionId":"5"},{"answer":"No","questionId":"6"},{"answer":"0","questionId":"7"},{"answer":"0","questionId":"8"},{"answer":"0","questionId":"9"},{"answer":"0","questionId":"10"},{"answer":"0","questionId":"11"},{"answer":"0","questionId":"12"},{"answer":"0","questionId":"13"},{"answer":"0","questionId":"14"},{"answer":"3","questionId":"18"},{"answer":"nko","questionId":"19"},{"answer":"hhkl","questionId":"15"},{"answer":"2","questionId":"16"},{"answer":"vnlf hugg","questionId":"17"}] 

这是通过在$ _POST [ '答案'] POST请求捕获:

if(isset($_POST['submitanswer'])){ 
    $dbh = connect(); 
    $user = $_POST['user']; 
    $entry = $_POST['entryId']; 
    $answers = $_POST['answers']; 
    $answers = json_decode($answers); //decode JSON answers 

    //for loop to iterate through answers ans insert new row into database 
} 

如何遍历Answers数组并在我的答案表中插入新行?

喜欢的东西:

foreach($answers as $row){ 
    $query = "INSERT INTO Answers (answer, questionId) VALUES ($row['answer'], $row['questionId'])"; 
    mysql_query($query); 
} 

回答

1

如果此代码不适合你,试试这个:

foreach($answers as $row){ 
$query = "INSERT INTO Answers (answer, questionId) VALUES (".$row['answer'].", ".$row['questionId'].")"; 
mysql_query($query); 
} 

否则,我不能在这里发现什么毛病。

0

我希望你知道这一点,但要确保你的连接字符串是好的。

其实这就是我所做的。可能对你来说有点多的信息,我也会在SQL中进行所有的连接,这样我就可以轻松地将字段注释掉以便进行测试。

$Link = mysql_connect($Host , $User , $Password , $DBName); 

if (!$Link) { 
    die('Could not connect: ' . mysql_error()); 
} 



$sql = "insert into table " 
       ."(" 
        ."hashfirstName"."," 
        ."hashfamilyName"."," 
        ."hashemailAddress" 
        .")" 
       ."values (" 
        ."'$firstNameHashed'"."," 
        ."'$familyNameHashed'"."," 
        ."'$emailAddressHashed'" 
        .")"; 

mysql_select_db($DBName , $Link) or die("Database error in insertdata<br>"."Error #" . mysql_errno() . ": " . mysql_error()); 



      if(!mysql_query($sql , $Link)) 
      { 
       $errors['sql'] = $sql; 
       $errors['DBName'] = $DBName; 
       $errors['Link'] = $Link; 
       $errors['status'] = "false"; //There was a problem saving the data; 
       echo json_encode($errors); 
      } 
      else 
      { 
       $errors['status'] = "true"; 
       echo json_encode($errors); 
      }; // if(!mysql_query($DBName , $sql , $Link))