PHP MySQL сравнить строки таблицы с массивом JSON

0

У меня есть таблица mysql с именем, именем и адресом электронной почты, которые я хочу сравнить с массивом электронной таблицы google (json) с теми же заголовками таблицы (имя, фамилия, адрес электронной почты). Если записи соответствуют друг другу, я хочу обновить таблицу. Например: у меня есть "John Doe" в таблице mysql и "John Doe" в моей электронной таблице google: если это правда, я хочу обновить определенное значение в этой строке таблицы mysql.

Мой код до сих пор, все строки получают обновление, потому что есть одно сравнение true. Мне нужны только определенные строки (возможно, с foreach?):

$sql = "SELECT * FROM student WHERE form=''"; //select from db
$result = $conn->query($sql);

while($row = mysqli_fetch_array($result)) //fetch it
{       
    $firstname= $row['firstname'];
    $lastname= $row['lastname'];
    $email = $row['email'];

    $url = 'https://spreadsheets.google.com/feeds/list/*MY-KEY*/od6/public/values?alt=json'; // my spreadsheet (key is inserted with me)
    $file= file_get_contents($url);
    $json = json_decode($file);
    $ress = $json->{'feed'}->{'entry'};

    foreach($ress as $res) {

    $fname = $res->{'gsx$naam'}->{'$t'};
    $lname = $res->{'gsx$achternaam'}->{'$t'};
    $mailing = $res->{'gsx$email'}->{'$t'};  
    }       

        if ($firstname.$lastname == $fname.$lname || $email == $mailing) {
            $sql2 = "UPDATE student SET form=1";

            if ($conn->query($sql2) === TRUE) { 
             echo "inserted";
            } 
        }

}
Теги:
arrays
comparison

1 ответ

0

Я думаю, вам нужно изменить цикл for и оператор if, подобный этому

foreach($ress as $res) {

    $fname = $res->{'gsx$naam'}->{'$t'};
    $lname = $res->{'gsx$achternaam'}->{'$t'};
    $mailing = $res->{'gsx$email'}->{'$t'};
    if ($firstname.$lastname == $fname.$lname || $email == $mailing) {
        $sql2 = "UPDATE student SET form=1";

        if ($conn->query($sql2) === TRUE) { 
         echo "inserted";
        }
        // to break from for loop when the record has been found
        break;
    }
}       
  • 0
    Спасибо за ваш ответ, но это все тот же результат. Каждый ряд редактируется ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню