php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 09-05-2007, 22:37
Stonebreaker62
 Member
Links : Onlinestatus : Stonebreaker62 ist offline
Registriert seit: Apr 2005
Beiträge: 161
Stonebreaker62 ist zur Zeit noch ein unbeschriebenes Blatt
Standard PDP Zugriffe auf MySQL

Hallo hat jemand ne Erklärung dafür, dass der 1. PDO Zugriff (SELECT ...)funktioniert und der darauffolgende (INSERT ...) nicht?

PHP-Code:
try {
$dbh = new PDO("$dbtyp:host=localhost;dbname=$dbname"$user$pass);
foreach (
$dbh->query("SELECT * FROM initiativen WHERE Unternehmen='$unternehmen'  ") as $row) {
if (
$_REQUEST['initiativenname'] == $row["Initiativenname"]) {
$this->msginitiativenname .= "<p class='fehlermessage'>Initiativenname bereits vergeben!</p>";
$this->valid 1;
}
}
$dbh null;
} catch (
PDOException $e) {
print 
"Error!: " $e->getMessage() . "<br/>";
die();


PHP-Code:
try {
$dbh = new PDO("$dbtyp:host=localhost;dbname=$dbname"$user$pass);
$count$dbh->exec("INSERT INTO initiativen (Unternehmen, Initiativenname ) VALUES ('$unternehmen' ,'$initiativenname' ");
$dbh null;
} catch (
PDOException $e) {
print 
"Error!: " $e->getMessage() . "<br/>";
die();

Die Variable $count ist leer, es gibt keine Fehlermeldung, es passiert rein garnichts beim Aufruf der exec Methode.
Mit Zitat antworten
  #2 (permalink)  
Alt 09-05-2007, 22:41
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.729
Kropff befindet sich auf einem aufstrebenden Ast
Standard

ohne die klasse PDO zu kennen, muss man raten. was passiert bei einem
PHP-Code:
$count$dbh->query(...); 
btw: warum hier auf einmal exec?

gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #3 (permalink)  
Alt 09-05-2007, 22:49
Stonebreaker62
 Member
Links : Onlinestatus : Stonebreaker62 ist offline
Registriert seit: Apr 2005
Beiträge: 161
Stonebreaker62 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PDO steht für PHP Data Objects und ist eine objektorientierte Schnittstelle für DB Zugriffe. Der Vorteil ist, dass dahinter nicht nur nur MySQL sondern jede beliebige andere DB stehen kann, für die es einen PDO Driver gibt.

Die query Methode wird benutzt, um Ergebnisse zu zurückzubekommen (SELECT) während die exec Methode dazu da ist, INSERTs und DELETEs auszuführen und die Anzahl der Zeilen zurückgibt, die durch die Operation betroffen waren. So zumindest habe ich das manual interpretiert.
Mit Zitat antworten
  #4 (permalink)  
Alt 09-05-2007, 23:10
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

kropff: rtfm

stonebreaker: schau dir an, was in errorInfo() steht.

und wo wird der zweite block ausgeführt? in einer anderen datei? ist dort error_reporting eingestellt?
Mit Zitat antworten
  #5 (permalink)  
Alt 09-05-2007, 23:17
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.729
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
kropff: rtfm
OffTopic:
bis ich jesus? trag ich latschen?


peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #6 (permalink)  
Alt 09-05-2007, 23:19
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

http://de2.php.net/manual/en/ref.pdo.php
Mit Zitat antworten
  #7 (permalink)  
Alt 09-05-2007, 23:20
Stonebreaker62
 Member
Links : Onlinestatus : Stonebreaker62 ist offline
Registriert seit: Apr 2005
Beiträge: 161
Stonebreaker62 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Der zweite Block wird in einer anderen Methode ausgeführt. Fehlermeldungen gibt es keine, auch im Quelltext nicht - sehr merkwürdig.

Hab es inzwischen mit einem prepared Statement gemacht und dieses mit der Methode execute ausgeführt. Und siehe da, es funktionierte.
Mit Zitat antworten
  #8 (permalink)  
Alt 09-05-2007, 23:22
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

var_dump von $dbh mal gemacht?

im ersten block ist übrigens $dbh = null; fehl am platz. und generell nicht notwendig.
Mit Zitat antworten
  #9 (permalink)  
Alt 09-05-2007, 23:33
Stonebreaker62
 Member
Links : Onlinestatus : Stonebreaker62 ist offline
Registriert seit: Apr 2005
Beiträge: 161
Stonebreaker62 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

var_dump ergibt:

object(PDO)#6 (0) { }

Das scheint nicht instanziiert zu sein oder was sagt uns das?
Mit Zitat antworten
  #10 (permalink)  
Alt 09-05-2007, 23:35
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

doch... versuch mal an der stelle ein select-statement auszuführen. kommst du an die datensätze dran?
Mit Zitat antworten
  #11 (permalink)  
Alt 09-05-2007, 23:40
Stonebreaker62
 Member
Links : Onlinestatus : Stonebreaker62 ist offline
Registriert seit: Apr 2005
Beiträge: 161
Stonebreaker62 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hab das INSERT durch ein SELECT ersetzt und das funktioniert bestens.
Mit Zitat antworten
  #12 (permalink)  
Alt 09-05-2007, 23:45
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

oh.. fehlt da nicht eine schließende klammer bei insert?
Mit Zitat antworten
  #13 (permalink)  
Alt 09-05-2007, 23:55
Stonebreaker62
 Member
Links : Onlinestatus : Stonebreaker62 ist offline
Registriert seit: Apr 2005
Beiträge: 161
Stonebreaker62 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hab das hier nochmal dokumentiert. Mit dem auskommentierten PREPARE geht es, mit dem QUERY darunter geht es nicht. Ich kann bei den Klammern keinen Fehler sehen.

PHP-Code:
/*
$dbh = new PDO("$dbtyp:host=localhost;dbname=$dbname", $user, $pass);
$stmt = $dbh->prepare("INSERT INTO initiativen (Unternehmen, Initiativenname ) VALUES (:value1, :value2)");
$stmt->bindParam(':value1', $unternehmen);
$stmt->bindParam(':value2', $initiativenname);
$stmt->execute();
*/
try {
$dbh = new PDO("$dbtyp:host=localhost;dbname=$dbname"$user$pass);
$dbh->query("INSERT INTO initiativen (Unternehmen, Initiativenname ) VALUES ($unternehmen, $initiativenname)");
var_dump ($dbh);
$dbh null;
} catch (
PDOException $e) {
print 
"Error!: " $e->getMessage() . "<br/>";
die();

Mit Zitat antworten
  #14 (permalink)  
Alt 09-05-2007, 23:57
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

bei deinem code ganz am anfang sind die strings richtig markiert, aber die klammern falsch gesetzt. nun - genau andersherum
Mit Zitat antworten
  #15 (permalink)  
Alt 10-05-2007, 00:07
Stonebreaker62
 Member
Links : Onlinestatus : Stonebreaker62 ist offline
Registriert seit: Apr 2005
Beiträge: 161
Stonebreaker62 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

sorry, ich kann mir das 10mal anschauen und seh den Fehler nicht (sitze wahrscheinlich schon zulange vor dem Monitor). Meinst Du die Klammer direkt hinter dem Aufruf der Query-Methode?
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

EJS TreeGrid ansehen EJS TreeGrid

EJS TreeGrid is DHTML component written in pure JavaScript to display and edit data in table, grid, tree view or grid with tree on HTML page

09.04.2019 coqsoft@ | Kategorie: JAVASCRIPT/ Components
Suchmaschine redaktionell, Branchenportal zum Geld verdienen

Programmbeschreibung Die Bezahl-Suchmaschine ist in Perl und PHP programmiert (eigenes CGI-Verzeichnis notwendig), benötigt PHP aber keine MySQL-Datenbank. Webmaster haben mit dieser Suchmaschine neben der normalen kostenlosen Registrierung von Lin

06.04.2019 skripte@ | Kategorie: PHP/ Suchmaschinen
Oog Photo-Video-Gallery

Mit Oog Photo-Gallery können Sie einfach und stilvoll Bilder (auch Video & Audio) auf Ihrem PHP5-Webserver veröffentlichen und verwalten. Lizenz: GNU GPL v2

06.04.2019 trottbrand@ | Kategorie: PHP/ Bilder
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:52 Uhr.