This question already has answers here:
"Notice: Undefined variable", "Notice: Undefined index", "Warning: Undefined array key", and "Notice: Undefined offset" using PHP
(29 answers)
Closed 4 years ago.
<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token');
header("Content-Type: application/json; charset=UTF-8");
include("global.php");
$conn = new mysqli(server, dbuser, dbpw, db);
$user = $_GET['user'];
//$customer = $_GET['customer'];
$querystring = "";
$querystring = "SELECT email, password, firstname, lastname from user ";
$result = $conn->query($querystring);
$outp = "[";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
if ($outp != "[") {$outp .= ",";}
$outp .= '{"email":"' . $rs["email"] . '",';
$outp .= '"password":"' . $rs["password"] . '",';
$outp .= '"firstname":"' . $rs["firstname"] . '",';
$outp .= '"lastname":"' . $rs["lastname"]. '"}';
}
$outp .="]";
$conn->close();
echo($outp);
?>
This is the PHP code in the database and need to use get method. the error shows undefined index : $user = $_GET['user']; when I run it shows this error. How to fix it?
You can fix this issue by add isset in $_GET['user'] and check its empty or not
<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token');
header("Content-Type: application/json; charset=UTF-8");
include("global.php");
$conn = new mysqli(server, dbuser, dbpw, db);
if( isset($_GET['user']) && $_GET['user']!='' ){
$user = $_GET['user'];
}else{
$user='';
}
//$customer = $_GET['customer'];
$querystring = "";
$querystring = "SELECT email, password, firstname, lastname from user ";
$result = $conn->query($querystring);
enter code here
$outp = "[";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
if ($outp != "[") {$outp .= ",";}
$outp .= '{"email":"' . $rs["email"] . '",';
$outp .= '"password":"' . $rs["password"] . '",';
$outp .= '"firstname":"' . $rs["firstname"] . '",';
$outp .= '"lastname":"' . $rs["lastname"]. '"}';
}
$outp .="]";
$conn->close();
echo($outp);
?>
Another way is that you can add # in front of $_GET['user']
<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token');
header("Content-Type: application/json; charset=UTF-8");
include("global.php");
$conn = new mysqli(server, dbuser, dbpw, db);
#$user = $_GET['user'];
//$customer = $_GET['customer'];
$querystring = "";
$querystring = "SELECT email, password, firstname, lastname from user ";
$result = $conn->query($querystring);
enter code here
$outp = "[";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
if ($outp != "[") {$outp .= ",";}
$outp .= '{"email":"' . $rs["email"] . '",';
$outp .= '"password":"' . $rs["password"] . '",';
$outp .= '"firstname":"' . $rs["firstname"] . '",';
$outp .= '"lastname":"' . $rs["lastname"]. '"}';
}
$outp .="]";
$conn->close();
echo($outp);
?>
I added the IF condition in below code you can check it. By adding this condition you are able to solve the undefine index issue
<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token');
header("Content-Type: application/json; charset=UTF-8");
include("global.php");
$conn = new mysqli(server, dbuser, dbpw, db);
if(!isset($_GET['user']) && empty($_GET['user']))
return false;// this will send back if data or index is not found and also solve the undefine index problem
$user = $_GET['user'];
//$customer = $_GET['customer'];
$querystring = "";
$querystring = "SELECT email, password, firstname, lastname from user ";
$result = $conn->query($querystring);
$outp = "[";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
if ($outp != "[") {$outp .= ",";}
$outp .= '{"email":"' . $rs["email"] . '",';
$outp .= '"password":"' . $rs["password"] . '",';
$outp .= '"firstname":"' . $rs["firstname"] . '",';
$outp .= '"lastname":"' . $rs["lastname"]. '"}';
}
$outp .="]";
$conn->close();
echo($outp);
?>
There are many ways to check if an array's index is undefined. The example below uses two methods: isset and empty.
The call to isset returns true if the array has the specified key.
The call to empty will return true if the value for the specified index is "empty" (null, empty string, zero, empty array, etc...) or if the specified key does not exist.
<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token');
header("Content-Type: application/json; charset=UTF-8");
include("global.php");
$conn = new mysqli(server, dbuser, dbpw, db);
$user = isset($_GET['user'])&&!empty($_GET['user']) ? $_GET['user'] : NULL;
//$customer = $_GET['customer'];
$querystring = "";
$querystring = "SELECT email, password, firstname, lastname from user ";
$result = $conn->query($querystring);
$outp = "[";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
if ($outp != "[") {$outp .= ",";}
$outp .= '{"email":"' . $rs["email"] . '",';
$outp .= '"password":"' . $rs["password"] . '",';
$outp .= '"firstname":"' . $rs["firstname"] . '",';
$outp .= '"lastname":"' . $rs["lastname"]. '"}';
}
$outp .="]";
$conn->close();
echo($outp);
?>
Related
i have a Persian data base that use collection utf8-general-ci but when i run below code i face with ???? instated of Persian words .
<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
$conn = new mysqli("localhost", "root", "", "testinsta");
$result = $conn->query("SELECT m_1, m_2, m_3 FROM codecode");
mysqli_query($conn, "SET NAMES utf8");
$outp = "";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
if ($outp != "") {$outp .= ",";}
$outp .= '{"Name":"' . $rs["m_1"] . '",';
$outp .= '"City":"' . $rs["m_2"] . '",';
$outp .= '"Country":"'. $rs["m_3"] . '"}';
}
$outp ='{"records":['.$outp.']}';
$conn->close();
echo($outp);
?>
mysql to json with php problem
You can do like this,
$conn = new mysqli("localhost", "root", "", "testinsta");
$conn->set_charset("utf8");
and remove below line,
mysqli_query($conn, "SET NAMES utf8");
and now check.
Here is brief details about Whether to use “SET NAMES”.
I need to fetch all the columns in the two tables. But i cant seem to fetch the data is there anything wrong with my php or is it my javascript.
<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token');
header("Content-Type: application/json; charset=UTF-8");
include("global.php");
$conn = new mysqli(server, dbuser, dbpw, db);
$userid = $_GET['userid'];
$result = $conn->query("SELECT * FROM profiles INNER JOIN StudentProfile ON profiles.userid = StudentProfile.userid");
$outp = "[";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
if ($outp != "[") {$outp .= ",";}
$outp .= '{"userid":"' . $rs["userid"] . '",';
$outp .= '"parentname":"' . $rs["parentname"] . '",';
$outp .= '"profilepic":"' . $rs["profilepic"] . '",';
$outp .= '"contact":"' . $rs["contact"] . '",';
$outp .= '"address":"' . $rs["address"] . '",';
$outp .= '"studentid":"' . $rs["studentid"] . '",';
$outp .= '"studentname":"' . $rs["studentname"] . '",';
$outp .= '"sclass":"' . $rs["sclass"] . '"}';
$outp .= '"sprofilepic":"' . $rs["sprofilepic"] . '",';
}
$outp .="]";
$conn->close();
echo($outp);
?>
studentprofile
profiles
1. you can do it with fetch_all. for this you must have mysqlnd driver
$result = $conn->query("SELECT * FROM profiles INNER JOIN StudentProfile ON profiles.userid = StudentProfile.userid");
$output = $result->fetch_all(MYSQLI_ASSOC);
$jsonOutput = json_encode($output);
2. with loop
$result = $conn->query("SELECT * FROM profiles INNER JOIN StudentProfile ON profiles.userid = StudentProfile.userid");
$output = [];
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
$output[] = $rs;
}
$jsonOutput = json_encode($output);
Problem is with your JavaScript in your code ...
check out last 2 lines of code inside while loop
just replace
$outp .= '"sclass":"' . $rs["sclass"] . '"}';
$outp .= '"sprofilepic":"' . $rs["sprofilepic"] . '",';
With
$outp .= '"sclass":"' . $rs["sclass"] . '",';
$outp .= '"sprofilepic":"' . $rs["sprofilepic"] . '"},';
Im trying to Fetch Data From a PHP Server Running MySQL. In my angular controller I do $http.get("dbconnection.php")
In my dbconnection.php I have this code which just Selects everything from the database and sends it back.
$conn = new mysqli......
$result = $conn->query("SELECT * FROM ...");
$outp = "";
while ($rs = $result->fetch_array(MYSQLI_ASSOC)) {
if ($outp != "") {
$outp .= ",";
}
$outp .= '{"id":"' . $rs["id"] . '",';
$outp .= '"name":"' . $rs["name"] . '",';
$outp .= '"price":"' . $rs["price"] . '"}';
$outp .= '"created":"' . $rs["created"] . '"}';
$outp .= '"img":"' . $rs["img"] . '"}';
}
$outp = '{"records":[' . $outp . ']}';
$conn->close();
echo $outp;
When I visit my site to see take a look at the Data under
Network Tab > XHR > dbconnection.php > Preview
I see the data but its weird formatted.
See picture of weird formatted json
I think thats the reason for why I get the
Unexpected token in JSON at position 43 ERROR
when I am trying to fetch the data.
To got well formatted JSON outputs, use json_encode function.
In your case :
$conn = new mysqli......
$result = $conn->query("SELECT * FROM ...");
$json = ["records" => []];
while ($rs = $result->fetch_array(MYSQLI_ASSOC)) {
$json["records"][] = $rs;
}
$conn->close();
echo json_encode($json);
i need to make a page which show all the items and when clicked bring me all the places where it is available.
i need to make this in mysql
app.controller('namesCtrl', function($scope) {
$scope.items = [
{name: 'item1', place: ['place1', 'place2']},
{name: 'item2', place: ['place2', 'place3']},
{name: 'item3', place: ['place1', 'place2', 'place3']},
{name: 'item4', place: ['place1']},
{name: 'item5', place: ['place1', 'place2']}
];
});
my php is
<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
$conn = new mysqli("localhost", "user", "pass", "table");
$result = $conn->query("SELECT * FROM `especialidades`");
$outp = "";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
if ($outp != "") {$outp .= ",";}
$outp .= '{"id":"' . $rs["id"] . '",';
$outp .= '"nombre_especialidad":"' . $rs["nombre_especialidad"] . '",';
$outp .= '"aguadilla":"' . $rs["aguadilla"] . '",';
$outp .= '"arecibo":"' . $rs["arecibo"] . '",';
$outp .= '"bayamon":"' . $rs["bayamon"] . '",';
$outp .= '"caguas":"' . $rs["caguas"] . '",';
$outp .= '"carolina":"' . $rs["carolina"] . '",';
$outp .= '"guayama":"' . $rs["guayama"] . '",';
$outp .= '"hato_rey":"' . $rs["hato_rey"] . '"}';
}
$outp ='{"especialidades":['.$outp.']}';
$conn->close();
echo($outp);
?>
im getting a lot of error.
how is the correct whay to make this in mysql and get it in json.
Your code should be like this
<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
$conn = new mysqli("localhost", "user", "pass", "table");
$result = $conn->query("SELECT id, nombre_especialidad,aguadilla,arecibo, bayamon,caguas,carolina,guayama,hato_rey FROM `especialidades`");
$outp = "";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
$outArray["especialidades"][] = $rs;
}
$conn->close();
$outp = json_encode($outArray);
echo $outp;
?>
Hope this will help you!!
if($_SERVER['REQUEST_METHOD'] == "GET"){
// Get post data`
$username = isset($_POST['username']) ? mysql_real_escape_string($_POST['username']) : "";
$password = isset($_POST['password']) ? mysql_real_escape_string($_POST['password']) : "";
//$status = 1;
// Here we set by default status In-active.
// Save data into database
//$resultarray = array();
$query = "select admin_user , admin_password from doc_admin where admin_user = '".$username."' and admin_password = '".$password."'";
$insert = mysql_query($query) or die (mysql_error());
if (mysql_num_rows($insert)>0)
{
while ($rs = mysql_fetch_assoc($insert))
{
$outp .= '{"id":"' . $rs["id"] . '",';
$outp .= '"admin_user":"' . $rs["admin_user"]. '",' ;
$outp .= '"admin_password":"' . base64_encode($rs["admin_password"]). '",' ;
$outp .= '"admin_status":"' . $rs["admin_status"] . '",';
$outp .= '"admin_data":"' . $rs["admin_data"] . '",';
$outp .= '"admin_calender":"' . $rs["admin_calender"] . '",';
$outp .= '"admin_suggestion":"' . $rs["admin_suggestion"] . '",';
$outp .= '"admin_agenda":"'. $rs["admin_agenda"] . '"}';
// array_push($resultarray,$result);
}
}
}
mysql_close($conn);
/* JSON Response */
header("Content-type: application/json");
echo json_encode($outp);
I want to show data of logged in person but it showing null value, but if it get null value in database it showing result in JSON format.
<?php
if($_SERVER['REQUEST_METHOD'] == "GET"){
// Get post data`
$username = isset($_POST['username']) ? mysql_real_escape_string($_POST['username']) : "";
$password = isset($_POST['password']) ? mysql_real_escape_string($_POST['password']) : "";
//$status = 1;
// Here we set by default status In-active.
// Save data into database
//$resultarray = array();
$query = "select * from doc_admin where admin_user = '".$username."' and admin_password = '".$password."'";
$insert = mysql_query($query) or die (mysql_error());
if (mysql_num_rows($insert)>0)
{
$rs = mysql_fetch_assoc($insert);
$outp = json_encode($rs);
} else {
$outp = json_encode(array());
}
}
mysql_close($conn);
/* JSON Response */
header("Content-type: application/json");
echo json_encode($outp);
?>