JSONKit - анализировать строку JSON в PHP для базы данных MYSQL - PullRequest
0 голосов
/ 29 июля 2011

В моей базе данных есть следующая схема:

Ответы:

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 ['answers']:

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
}

Как перебрать массив ответов и вставить новую строку в мою таблицу ответов?

Что-то вроде:

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

Ответы [ 2 ]

1 голос
/ 29 июля 2011

Если этот код не сработал для вас, попробуйте следующее:

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

В противном случае, я не могу обнаружить здесь ничего плохого.

0 голосов
/ 29 июля 2011

Полагаю, вы знаете это, но убедитесь, что ваша строка подключения в порядке.

На самом деле это то, что я делаю.Вероятно, немного больше информации для вас, также я делаю всю эту конкатенацию в 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...