выберите данные из MySQL, используя JSON

Я разрабатываю мобильное приложение с помощью Ionic. когда я пытаюсь выбрать данные из mysql, они работают в моем браузере, но когда я использую внешний сервер, они не работают (на моем телефоне) !!!
Кто-нибудь может мне помочь :

ExtractData.php:

<?php

header("Access-Control-Allow-Origin: *");

$request=json_decode(file_get_contents("php://input"));
$con=mysql_connect("","","") ;//or die(mysql_error());
mysql_select_db("myDbB",$con);

$qry_em_1 = "SELECT id,matricule,idTransporteur FROM camion";
$qry_em_2 = "SELECT id,matricule FROM bateau";
$qry_em_3 = "SELECT id,codeTransporteur FROM transporteur";
$qry_em_4 = "SELECT id,designation FROM trajet";

$qry_em_5 = "SELECT id,codeFr FROM fournisseur";
$qry_em_6 = "SELECT codeArticle,description FROM article";
$qry_em_7 = "SELECT id,description FROM moyenTransport";

$result_1 = mysql_query($qry_em_1) or die('Could not query');
$result_2 = mysql_query($qry_em_2) or die('Could not query');
$result_3 = mysql_query($qry_em_3) or die('Could not query');
$result_4 = mysql_query($qry_em_4) or die('Could not query');
$result_5 = mysql_query($qry_em_5) or die('Could not query');
$result_6 = mysql_query($qry_em_6) or die('Could not query');
$result_7 = mysql_query($qry_em_7) or die('Could not query');

//encode camion data
if(mysql_num_rows($result_1)){
echo '{"camion":[';

$first = true;
while($row=mysql_fetch_row($result_1)){

if($first) {
$first = false;
} else {
echo ',';
}
echo json_encode($row);
}
echo '],';
} else {
echo '[]';
}

//encode bateau data
if(mysql_num_rows($result_2)){
echo '"bateau":[';

$first = true;
while($row=mysql_fetch_row($result_2)){

if($first) {
$first = false;
} else {
echo ',';
}
echo json_encode($row);
}
echo '],';
} else {
echo '[]';
}

//encode transporteur data
if(mysql_num_rows($result_3)){
echo '"transporteur":[';

$first = true;
while($row=mysql_fetch_row($result_3)){

if($first) {
$first = false;
} else {
echo ',';
}
echo json_encode($row);
}
echo '],';
} else {
echo '[]';
}

//encode trajet data

if(mysql_num_rows($result_4)){
echo '"trajet":[';

$first = true;
while($row=mysql_fetch_row($result_4)){

if($first) {
$first = false;
} else {
echo ',';
}
echo json_encode($row);
}
echo '],';
} else {
echo '[]';
}

//encode fournisseur data
if(mysql_num_rows($result_5)){
echo '"fournisseur":[';

$first = true;
while($row=mysql_fetch_row($result_5)){

if($first) {
$first = false;
} else {
echo ',';
}
echo json_encode($row);
}
echo '],';
} else {
echo '[]';
}

//encode article data
if(mysql_num_rows($result_6)){
echo '"article":[';

$first = true;
while($row=mysql_fetch_row($result_6)){

if($first) {
$first = false;
} else {
echo ',';
}
echo json_encode($row);
}
echo '],';
} else {
echo '[]';
}

//encode transport data

if(mysql_num_rows($result_7)){
echo '"moyenTransport":[';

$first = true;
while($row=mysql_fetch_row($result_7)){

if($first) {
$first = false;
} else {
echo ',';
}
echo json_encode($row);
}
echo ']}';
} else {
echo '[]';
}

mysql_close($con);

?>

Я думаю, что проблема в формате Json, потому что, когда я разделяю объекты в другом файле .php, это работает, но я хочу использовать один файл php

1

Решение

Как сказал @ jay-blanchard, вы должны использовать библиотеку, такую ​​как PDO, для выполнения ваших запросов, или полноценный ORM, такой как доктрина.

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

Итак, если вы используете Doctrine, вы можете сделать что-то вроде этого:

$camion       = $entityManager->createQuery($qry_em_1)->getArrayResult();
$bateau       = $entityManager->createQuery($qry_em_2)->getArrayResult();
$transporteur = $entityManager->createQuery($qry_em_3)->getArrayResult();
$trajet       = $entityManager->createQuery($qry_em_4)->getArrayResult();
$fournisseur  = $entityManager->createQuery($qry_em_5)->getArrayResult();
$article      = $entityManager->createQuery($qry_em_6)->getArrayResult();
$mTransport   = $entityManager->createQuery($qry_em_7)->getArrayResult();

return json_encode([
'camion'         => $camion,
'bateau'         => $bateau,
'transporteur'   => $transporteur,
'trajet'         => $trajet,
'fournisseur'    => $fournisseur,
'article'        => $article,
'moyenTransport' => $mTransport
]);
0

Другие решения

задача решена :

Я заменяю mysql_ * на PDO:

<?php
require_once("Connexion.php");
header("Access-Control-Allow-Origin: *");

$request=json_decode(file_get_contents("php://input"));

$qry_em_1 = "SELECT id,matricule,idTransporteur FROM camion";
$qry_em_2 = "SELECT id,matricule FROM bateau";
$qry_em_3 = "SELECT id,codeTransporteur FROM transporteur";
$qry_em_4 = "SELECT id,designation FROM trajet";

$qry_em_5 = "SELECT id,codeFr FROM fournisseur";
$qry_em_6 = "SELECT codeArticle,description FROM article";
$qry_em_7 = "SELECT id,description FROM moyenTransport";

$result_1 = $db->prepare($qry_em_1) or die('Could not query');
$result_2 = $db->prepare($qry_em_2) or die('Could not query');
$result_3 = $db->prepare($qry_em_3) or die('Could not query');
$result_4 = $db->prepare($qry_em_4) or die('Could not query');
$result_5 = $db->prepare($qry_em_5) or die('Could not query');
$result_6 = $db->prepare($qry_em_6) or die('Could not query');
$result_7 = $db->prepare($qry_em_7) or die('Could not query');

$result_1->execute();
$result_2->execute();
$result_3->execute();
$result_4->execute();
$result_5->execute();
$result_6->execute();
$result_7->execute();

$camion=$result_1->fetchAll(PDO::FETCH_NUM);
$bateau=$result_2->fetchAll(PDO::FETCH_NUM);
$transporteur=$result_3->fetchAll(PDO::FETCH_NUM);
$trajet=$result_4->fetchAll(PDO::FETCH_NUM);
$fournisseur=$result_5->fetchAll(PDO::FETCH_NUM);
$article=$result_6->fetchAll(PDO::FETCH_NUM);
$mTransport=$result_7->fetchAll(PDO::FETCH_NUM);

echo json_encode([
'camion'         => $camion,
'bateau'         => $bateau,
'transporteur'   => $transporteur,
'trajet'         => $trajet,
'fournisseur'    => $fournisseur,
'article'        => $article,
'moyenTransport' => $mTransport
]);

$db = null;

?>

connection.php

<?php
$hostname = "";
$username = "";
$database="";
$password = "";

try {
$db = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

}
catch(PDOException $e) {
echo $e->getMessage();
}
?>

спасибо, ребята, за ваши советы

0

По вопросам рекламы [email protected]