Как использовать API выборки для получения нескольких переменных из php - PullRequest
0 голосов
/ 24 апреля 2020

я пытаюсь получить более одной переменной с моего пульта php с помощью API выборки Javscript, \ это мой php

<?php 

include 'config.php';
//$email = $_GET['email'];
try {
    $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
    $sql = "SELECT name, phone FROM searchResults WHERE email=:email";
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $dbh->prepare($sql);  
    $stmt->bindParam(":email", $_GET['email']);
    $stmt->execute();
    $row = $stmt->fetch();
    $name = $row[0];
    $number =  $row[1];
    echo $name;
    echo $number;
} catch(PDOException $e) {
    echo '{"error":{"text":'. $e->getMessage() .'}}'; 
}

?>

это мой javascript

var email = appSettings.getString("email");
  var url = "https://adekunletestprojects.000webhostapp.com/skog/getMyname.php?search=" + encodeURIComponent(email);
  fetch(url).then((response) => response.text()).then((res) => {
    viewModel.set("myName", res.name);
    alert(res.name);
    appSettings.set("myNme", res.name);
    appSettings.set("myNumber", res.number);
  }).catch((err) => {

  });

помогите пожалуйста

Ответы [ 2 ]

3 голосов
/ 24 апреля 2020

Вы должны вернуть все переменные в JSON объекте.

<?php 

include 'config.php';
//$email = $_GET['email'];
try {
    $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
    $sql = "SELECT name, phone FROM searchResults WHERE email=:email";
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $dbh->prepare($sql);  
    $stmt->bindParam(":email", $_GET['email']);
    $stmt->execute();
    $row = $stmt->fetch();
    $name = $row[0];
    $number =  $row[1];
    echo json_encode(['name' => $name, 'number' => $number]);
} catch(PDOException $e) {
    echo echo json_encode(['error' => ['text' => $e->getMessage() ]]); 
}
?>

Затем используйте response.json() для декодирования в JavaScript.

var email = appSettings.getString("email");
  var url = "https://adekunletestprojects.000webhostapp.com/skog/getMyname.php?search=" + encodeURIComponent(email);
  fetch(url).then((response) => response.json()).then((res) => {
    if (!res.error) {
        viewModel.set("myName", res.name);
        alert(res.name);
        appSettings.set("myNme", res.name);
        appSettings.set("myNumber", res.number);
    } else {
        alert(res.error.text);
    }
  }).catch((err) => {

1 голос
/ 24 апреля 2020

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

echo $name;
echo $number;

становится

echo json_encode(["error"=>,"","name" => $name,"number"=>$number]);

, также делайте то же самое для вашей ошибки:

echo json_encode(['error' => $e->getMessage()]);
...