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.722
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.722
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

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

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:49 Uhr.