Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde pessoal, desde ontem estou tentando gerar um JSON com dados vindo do mySQL, e nada dá certo, não retorna na tela, nem erro e quando dou um var_dump as informações aparecem.
Será que é fácil de resolver para os mais experientes?
$DBC = self::DBC();
$QUERY = $DBC->prepare("SELECT * FROM ipLocale WHERE siteaccess = 'RSANTANA.COM/ONEPAGE' ORDER BY id DESC");
$QUERY->execute();
$QUERY = $QUERY->fetchAll(PDO::FETCH_ASSOC);
$JSON = array('rsantana_all' => $QUERY);
//var_dump($JSON);die;
print json_encode($JSON);>
59 minutos atrás, ygor.anjos disse:
utilize print_r ao invés de print
print_r json_encode($JSON);
Ainda assim não exibe nada Ygor.Posta seu código inteiro pra gente ver, de preferência esse de onde você ta chamando self::DBC();
>
1 minuto atrás, BrunoMs disse:
Posta seu código inteiro pra gente ver, de preferência esse de onde você ta chamando self::DBC();
public static function DBC() {
try {
return new PDO("mysql:host=localhost;dbname=ronny_ipLocale", self::$user, self::$pass);
}catch(PDOException $e){
echo $e->getMessage();
}
}
public static function RSantanaAllReturn() {
$DBC = self::DBC();
$QUERY = $DBC->prepare("SELECT id, ip, locale, date, hour, useragent FROM ipLocale WHERE siteaccess = 'RSANTANA.COM/ONEPAGE' ORDER BY id DESC");
$QUERY->execute();
return $QUERY->fetchAll(PDO::FETCH_ASSOC);
}
$r = self::RSantanaAllReturn();
$array = array('rsantana_all' => $r);
//var_dump($array);die;
var_dump(json_encode($array, JSON_PRETTY_PRINT));
print json_encode($array, JSON_PRETTY_PRINT);
die();
Ao dar var_dump(json_encode($array, JSON_PRETTY_PRINT)); apresenta o resultado bool(false), mas ap dar var_dump sem o json_encode apresenta o array com as informações do banco de dados.Testei seus códigos aqui e ta funcionando normalmente, a única alteração que fiz foi, ao invés de usar $r = self::RSantanaAllReturn(); eu utilizei $r = testingDBC::RSantanaAllReturn(); . testingDBC no caso seria o nome da class de teste que fiz aqui pra testar seu código. Veja aqui:
<?php
class testingDBC{
public static $user = "root";
public static $pass = "";
public static function DBC() {
try {
return new PDO("mysql:host=localhost;dbname=meu_banco", self::$user, self::$pass);
}catch(PDOException $e){
echo $e->getMessage();
}
}
public static function RSantanaAllReturn() {
$DBC = self::DBC();
$QUERY = $DBC->prepare("SELECT * FROM minha_tabela WHERE minha_coluna_1 = 'dados_pra_busca' ORDER BY minha_coluna_id DESC");
$QUERY->execute();
return $QUERY->fetchAll(PDO::FETCH_ASSOC);
}
}
$r = testingDBC::RSantanaAllReturn();
$array = array('rsantana_all' => $r);
//var_dump($array);die;
var_dump(json_encode($array, JSON_PRETTY_PRINT));
print json_encode($array, JSON_PRETTY_PRINT);
die();
funcionou normalmente, inclusive com json_encode().>
34 minutos atrás, BrunoMs disse:
Testei seus códigos aqui e ta funcionando normalmente, a única alteração que fiz foi, ao invés de usar $r = self::RSantanaAllReturn(); eu utilizei $r = testingDBC::RSantanaAllReturn(); . testingDBC no caso seria o nome da class de teste que fiz aqui pra testar seu código. Veja aqui:
<?php
class testingDBC{
public static $user = "root";
public static $pass = "";
public static function DBC() {
try {
return new PDO("mysql:host=localhost;dbname=meu_banco", self::$user, self::$pass);
}catch(PDOException $e){
echo $e->getMessage();
}
}
public static function RSantanaAllReturn() {
$DBC = self::DBC();
$QUERY = $DBC->prepare("SELECT * FROM minha_tabela WHERE minha_coluna_1 = 'dados_pra_busca' ORDER BY minha_coluna_id DESC");
$QUERY->execute();
return $QUERY->fetchAll(PDO::FETCH_ASSOC);
}
}
$r = testingDBC::RSantanaAllReturn();
$array = array('rsantana_all' => $r);
//var_dump($array);die;
var_dump(json_encode($array, JSON_PRETTY_PRINT));
print json_encode($array, JSON_PRETTY_PRINT);
die();
funcionou normalmente, inclusive com json_encode().
Aqui não tem jeito para fazer funcionar...
o var_dump resulta nesse resultado abaixo
array(1) {
["rsantana_all"]=>
array(3) {
[0]=>
array(6) {
["id"]=>
string(4) "1573"
["ip"]=>
string(13) "201.54.165.38"
["locale"]=>
string(23) "Arapiraca - AL - Brazil"
["date"]=>
string(10) "22/12/2017"
["hour"]=>
string(8) "19:12:36"
["useragent"]=>
string(209) "Mozilla/5.0 (Linux; Android 6.0.1; SM-G600FY Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/63.0.3239.111 Mobile Safari/537.36 [FB_IAB/Orca-Android;FBAV/147.0.0.25.86;]/FB_MEXT_IAB"
}
[1]=>
array(6) {
["id"]=>
string(4) "1571"
["ip"]=>
string(13) "187.59.231.98"
["locale"]=>
string(23) "Cariacica - ES - Brazil"
["date"]=>
string(10) "22/12/2017"
["hour"]=>
string(8) "18:12:56"
["useragent"]=>
string(208) "Mozilla/5.0 (Linux; Android 6.0.1; SM-A500M Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/63.0.3239.111 Mobile Safari/537.36 [FB_IAB/Orca-Android;FBAV/147.0.0.25.86;]/FB_MEXT_IAB"
}
[2]=>
array(6) {
["id"]=>
string(4) "1570"
["ip"]=>
string(12) "187.32.198.9"
["locale"]=>
string(34) "Campo Limpo Paulista - SP - Brazil"
["date"]=>
string(10) "22/12/2017"
["hour"]=>
string(8) "15:12:11"
["useragent"]=>
string(211) "Mozilla/5.0 (Linux; Android 6.0; XT1069 Build/MPB24.65-34-3; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/63.0.3239.111 Mobile Safari/537.36 [FB_IAB/Orca-Android;FBAV/147.0.0.25.86;]/FB_MEXT_IAB"
}
}
}
Será que pode ser por causa da codificação do banco de dados?
Você tentou colocar o nome referindo à sua classe como dei de exemplo?
$r = suaClasse::RSantanaAllReturn();
Pode ser inúmeras coisas que esteja impedindo o funcionamento, pq esse trecho ai que te mandei está funcionando, tem alguma outra coisa interferindo, pode ser no banco, alguma coluna inexistente ou até mesmo dentro da classe. Esse é o código inteiro ou tem mais? Pq esse aí ta funcionando normal.
Coloca esse trecho no início dos arquivos que você está testando pra aparecer os possíveis erros e avisos:
ini_set('display_errors', true);
error_reporting(E_ALL);>
8 minutos atrás, BrunoMs disse:
Você tentou colocar o nome referindo à sua classe como dei de exemplo?
$r = suaClasse::RSantanaAllReturn();
Pode ser inúmeras coisas que esteja impedindo o funcionamento, pq esse trecho ai que te mandei está funcionando, tem alguma outra coisa interferindo, pode ser no banco, alguma coluna inexistente ou até mesmo dentro da classe. Esse é o código inteiro ou tem mais? Pq esse aí ta funcionando normal.
Coloca esse trecho no início dos arquivos que você está testando pra aparecer os possíveis erros e avisos:
ini_set('display_errors', true);
error_reporting(E_ALL);
Coloquei o nome da Classe sim, antes estava self porque estava dentro da mesma classe, mas separei em outro arquivo e fiz como no trecho abaixo
ini_set('display_errors', true);
error_reporting(E_ALL);
header("Access-Control-Allow-Origin: *");
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
header('Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With');
header("Content-type:application/json;charset=utf-8");
$foreach = Controller::RSantanaAll();
$JSON = array('rsantana_all' => $foreach);
//var_dump($JSON);die;
var_dump(json_encode($JSON, JSON_FORCE_OBJECT));die;
print json_encode($JSON, JSON_PRETTY_PRINT);
Dentro do metodo só tem esse código abaixo
$DBC = self::DBC();
$QUERY = $DBC->prepare("SELECT id, ip, locale, date, hour, useragent FROM ipLocale WHERE siteaccess = 'RSANTANA.COM/ONEPAGE' ORDER BY id DESC LIMIT 12");
$QUERY->execute();
return $QUERY->fetchAll(PDO::FETCH_ASSOC);
E olha que estranho, quando eu coloco "LIMIT 4" no SELECT, ele retorna normalmente, acima disso não resulta nada... Resultado abaixo
{
"rsantana_all": [
{
"id": "1573",
"ip": "201.54.165.38",
"locale": "Arapiraca - AL - Brazil",
"date": "22\/12\/2017",
"hour": "19:12:36",
"useragent": "Mozilla\/5.0 (Linux; Android 6.0.1; SM-G600FY Build\/MMB29M; wv) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/63.0.3239.111 Mobile Safari\/537.36 [FB_IAB\/Orca-Android;FBAV\/147.0.0.25.86;]\/FB_MEXT_IAB"
},
{
"id": "1571",
"ip": "187.59.231.98",
"locale": "Cariacica - ES - Brazil",
"date": "22\/12\/2017",
"hour": "18:12:56",
"useragent": "Mozilla\/5.0 (Linux; Android 6.0.1; SM-A500M Build\/MMB29M; wv) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/63.0.3239.111 Mobile Safari\/537.36 [FB_IAB\/Orca-Android;FBAV\/147.0.0.25.86;]\/FB_MEXT_IAB"
},
{
"id": "1570",
"ip": "187.32.198.9",
"locale": "Campo Limpo Paulista - SP - Brazil",
"date": "22\/12\/2017",
"hour": "15:12:11",
"useragent": "Mozilla\/5.0 (Linux; Android 6.0; XT1069 Build\/MPB24.65-34-3; wv) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/63.0.3239.111 Mobile Safari\/537.36 [FB_IAB\/Orca-Android;FBAV\/147.0.0.25.86;]\/FB_MEXT_IAB"
},
{
"id": "1568",
"ip": "179.104.232.220",
"locale": "Uberaba - MG - Brazil",
"date": "22\/12\/2017",
"hour": "14:12:11",
"useragent": "Mozilla\/5.0 (Linux; Android 5.1.1; SM-G531H Build\/LMY48B; wv) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/62.0.3202.84 Mobile Safari\/537.36 [FB_IAB\/Orca-Android;FBAV\/146.0.0.33.136;]\/FB_MEXT_IAB"
}
]
}
Acabei de descobrir que o problema é a codificação de caracteres de um campo da tabela do banco de dados.
Resolvido com "charset=utf8" no New PDO
utilize print_r ao invés de print
print_r json_encode($JSON);