Jump to content
sEnte

Não dá output de erro mesmo com nome de DB mal escrito

Recommended Posts

sEnte

Muito resumidamente instalei recentemente um web server na minha máquina e instalei NGINX, MariaDB 10.0.5 e o phpMyAdmin

Agora estou para começar um sistema de login com o mysqli. Atualmente só tenho isto um index.php e um connect.php que está dentro de uma pasta, db.

dentro do index.php tenho só isto

<?php
error_reporting(E_ALL);
require 'db/connect.php';
?>

e no connect.php isto

<?php
$db = new mysqli('127.0.0.1', 'username', 'password', 'penz');
?>

Só naquela de experimentar dei o nome de pen à minha db, o que acontece é que se usar pen como nome da db não aparece nada como é suposto mas se meter como penz em vez de pen deveria dar-me este erro

Warning:mysqli::mysqli(): (HY000/1049): Unkown database 'penz' in path\of\the\folder\db\connect.php on line 2

mas não dá rigorisamente nada.

No terminal experimentei isto mysql -u root -p'' depois escrevi SHOW DATABASES e apareceu as DBs, se usar USE pen; consigo aceder à db, se meter penz em vez de pen dá erro como era de esperar.

Porque raio através do terminal consigo aceder à db e através do ficheiro php não?

Mais infos aqui

http://stackoverflow.com/questions/19941272/even-with-a-misspelled-db-name-it-wont-outsput-errors


"If It Ain't Broke, Break it and build something Cooler!" Unknown

Share this post


Link to post
Share on other sites
HappyHippyHippo

escreve no início do teu script de PHP as seguintes instruções:

error_reporting(E_ALL);
ini_set('display_errors', 1);

e diz se continua a não apresentar erro

Edited by HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
sEnte

Há novidades :)

Agora tenho isto :S

Warning: mysqli::mysqli(): Headers and client library minor version mismatch. Headers:50532 Library:100005 in /usr/share/nginx/www/mysqli/db/connect.php on line 3 Warning: mysqli::mysqli(): (28000/1045): Access denied for user 'username'@'localhost' (using password: YES) in /usr/share/nginx/www/mysqli/db/connect.php on line 3

Sou um bocado nabo nas permissões mas um colega meu que usa Linux deu-me isto para meter

chown -R youruser:www-data /usr/share/nginx/www/

find /usr/share/nginx/www -type d -exec chmod 755 {} +

find /usr/share/nginx/www -type f -exec chmod 644 {} +

Por acaso só experimentei o primeiro mas chmod :S

Edited by sEnte

"If It Ain't Broke, Break it and build something Cooler!" Unknown

Share this post


Link to post
Share on other sites
sEnte

adicionando isto

/* activate reporting */
$driver = new mysqli_driver();
$driver->report_mode = MYSQLI_REPORT_ALL;

deixa de aparecer qualquer erro

e sim uso as minhas credenciais para na função de ligação, só alterei para meter aqui

Com este código

if($db->connect_errno) {
 echo $db->connect_error;
}

Realmente aparece Unkown database 'penz'. Se o tirar deixa de aparecer qualquer erro :S Não deveria aparecer na mesma?

Edited by sEnte

"If It Ain't Broke, Break it and build something Cooler!" Unknown

Share this post


Link to post
Share on other sites
sEnte

Isto é para ser oop e não PDO :)

agora estou com outro problema : OMG

se meter

$rows = $result->fetch_assoc();

mostra-me um dos resultados da db (e tenho lá 2). Se mudar para

$rows = $result->fetch_all();

deixa de me mostrar seja o que for :S

Edited by sEnte

"If It Ain't Broke, Break it and build something Cooler!" Unknown

Share this post


Link to post
Share on other sites
I-NOZex

moç, disseste ai um contra-senso total...

é para ser object oriented programming e nao PHP DATABASE OBJECT

tudo bem que teem suporte a uma escrita processual, mas mysqli e PDO sao mais virados para o OO

  • Vote 1

B2R » Beat2Revolution v3.0b | Regista e divulga-nos

beat2revolution.net

Share this post


Link to post
Share on other sites
sEnte

Não percebi :S Isto é oop ou pelo menos é para ser.


"If It Ain't Broke, Break it and build something Cooler!" Unknown

Share this post


Link to post
Share on other sites
I-NOZex

e PDO é o que amigo? :D

dai dizer que foi um contra-senso

pdo é uma classe de ligaçao a base de dados, nao so mysql, mas tambem sqllite, entre varios outros , e está sob a forma O.O

tal como o nome indica PDO = PHP DATA OBJECTs :thumbsup:

http://www.php.net/manual/pt_BR/book.pdo.php

Edited by I-NOZex
  • Vote 1

B2R » Beat2Revolution v3.0b | Regista e divulga-nos

beat2revolution.net

Share this post


Link to post
Share on other sites
yoda

Um exemplo de uma query em PDO :

// $dbh = database handler

$query = $dbh->prepare('SELECT * FROM test_table WHERE id = :id');

$query->bindValue(':id', 1, PDO::PARAM_INT);

$query->execute();

$result = $query->fetchAll(PDO::FETCH_OBJ);

if (count($result) > 0)
{
   foreach($result as $r)
   {
       echo $r->name;
   }
}

  • Vote 1

Share this post


Link to post
Share on other sites
sEnte

Sim isso eu sei :) mas este não usa PDO

o que tenho é simplesmente isto

<?php
//error_reporting(0);
require 'db/connect.php';
if ($result = $db->query("SELECT * FROM people")) {
 if ($count = $result->num_rows) {
  //echo '<p>', $count ,'</p>';
  while ($row = $result->fetch_object()) {
echo $row->first_name, ' ', $row->last_name, '<br>';
  }
  $result->free();
 }
}
?>

Não sei se é a melhor maneira de fazer isto mas pronto. Até agora está só a buscar dados na DB, mas mais uma vez não mostra qualquer erro.

Mas de qualquer maneira estamos um bocado a fugir à ideia principal deste tópico que era saber porque é que isto não me está a dar output de erros :S Se calhar tenho de meter as opções todas as opções na parte referente ao error_reporting no ficheiro php.ini

Mais um edit lol

Opa já me estou a passar com isto. Por exemplo neste if

if (isset($_GET['last_name'])) {
 $last_name = trim($_GET['last_name']);
 $people = $db->prepare("SELECT first_name, last_name FROM people WHERE last_name = ?");
 $people->bind_param('s', $last_name);
 $people->execute();
 print_r($people);
}

O print_r() não me mostra qualquer resultado :S

Edited by sEnte

"If It Ain't Broke, Break it and build something Cooler!" Unknown

Share this post


Link to post
Share on other sites
I-NOZex

o codigo a partida parece-me correcto... experimenta meter um echo ou assim, ou um die(var_dump($_GET['last_name'])) antes do if...


B2R » Beat2Revolution v3.0b | Regista e divulga-nos

beat2revolution.net

Share this post


Link to post
Share on other sites
sEnte

Se eu meter antes do If não me vai aparecer nada porque a única coisa que tenho é

require 'db/connect.php';


"If It Ain't Broke, Break it and build something Cooler!" Unknown

Share this post


Link to post
Share on other sites
I-NOZex

o parametro GET ta a levar valor correcto?

o codigo parece tar certo, por isso so me vem a mente que a validaçao do if esta a falhar...


B2R » Beat2Revolution v3.0b | Regista e divulga-nos

beat2revolution.net

Share this post


Link to post
Share on other sites
sEnte

o que tenho no URI ou URL é

http://127.0.0.1/mysqli/?last_name=Smith

De qualquer maneira não aparece nada :S

Edited by sEnte

"If It Ain't Broke, Break it and build something Cooler!" Unknown

Share this post


Link to post
Share on other sites
sEnte

máquina local :S onde estão os logs? sabes?


"If It Ain't Broke, Break it and build something Cooler!" Unknown

Share this post


Link to post
Share on other sites
sEnte

Disse no tópico inicial mas sim é em Linux e instalei NGINX, MariaDB 10.0.5 e o phpMyAdmin

Parece que a minha versão do php é a 5.3.10 :S

Edited by sEnte

"If It Ain't Broke, Break it and build something Cooler!" Unknown

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.