[php] exec mysql return error

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Soef
  • Registratie: Februari 2001
  • Laatst online: 03-02-2023

Soef

-Soef^IO-

Topicstarter
Mensen,

Ik probeer in PHP een sql bestand (aanwezig op de harde schijf van de Linux webserver) te importeren. Dit gaat allemaal prima, zo moeilijk is dat ook niet:

PHP:
1
2
3
exec ("mysql -u gebruiker -p'password' databasenaam < /pad/naar/sqlbestand.sql", $returnArray);

echo "<pre>" . print_r ($returnArray, 1) . "</pre>";


Stel, er staat een vette fout in het sql bestand staat, dan krijg ik als ik die mysql regel uitvoer een vette error. in de trent van:
code:
1
ERROR 1065: You have an error in your sql syntax near line 566. View your mysql manual... etc etc


Dit krijg ik echter niet terug in mijn $returnArray wanneer ik het zelfde brakke sql bestand probeer te importeren met php exec.

Iemand een idee hoe ik dit toch kan zien?

Bedankt!

PS. ik heb nix aan antwoorden zoals "waarom zou je dat willen?"

Some things can not happen until they happen...


Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Probeer het anders eens zo:
PHP:
1
echo '<pre>'.`mysql -u gebruiker -p'password' databasenaam < /pad/naar/sqlbestand.sql`.'</pre>';


Ik heb zelf ook al weleens problemen gehad met exec, wat de oorzaak daarvan was weet ik helaas niet.

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • Piro
  • Registratie: Oktober 2001
  • Laatst online: 12-09 05:29

Piro

Destructief

De functie exec() vangt standaard alleen STDOUT op, errors vallen echter in STDERR. Als je '2>&1' aan je commando toevoegd zul je wel je melding te zien krijgen :).

code:
1
mysql -u gebruiker -p'password' databasenaam 2>&1 < /pad/naar/sqlbestand.sql

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Waarschijnlijk wordt die foutmelding niet naar de stdout, maar naar de stderr geschreven. Deze komen dan waarschijnlijk niet en het resultaat terecht. Probeer achter je commando eens 2>&1 te zetten zodat de stderror wordt doorgestuurd naar stdout.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Soef
  • Registratie: Februari 2001
  • Laatst online: 03-02-2023

Soef

-Soef^IO-

Topicstarter
Piro schreef op dinsdag 05 april 2005 @ 14:21:
De functie exec() vangt standaard alleen STDOUT op, errors vallen echter in STDERR. Als je '2>&1' aan je commando toevoegd zul je wel je melding te zien krijgen :).

code:
1
mysql -u gebruiker -p'password' databasenaam 2>&1 < /pad/naar/sqlbestand.sql
Dank u! Ik kan weer verder!

Some things can not happen until they happen...