1Danke
ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
397
397
EMPFEHLEN
-
Hallo Leute
ich versuch gerade mit dem video2brain Tutorial die Grundlagen des PHPs zu erlernen.
In diesem Tutorial sind auch Codeschnipsel erhalten. So z.B steht im Kapitel „Datenbank füllen“ folgendes:
PHP-Code:<?php
if (isset($_POST['submit']) && isset($_POST['titel']) && isset($_POST['trainer']) &&
isset($_POST['dauer']) && $_POST['titel'] != '' && $_POST['trainer'] != '' &&
(int)$_POST['dauer'] > 0) {
try {
$db = new MySQLi('localhost', 'root', '', 'php');
echo 'Verbindung offen.<br />';
$sql = 'INSERT INTO trainings (titel, trainer, dauer) VALUES (?, ?, ?)';
$kommando = $db->prepare($sql);
$kommando->bind_param('ssi', $_POST['titel'], $_POST['trainer'], $dauer);
if (!$kommando) {
echo $db->error;
}
$dauer = (int)$_POST['dauer'];
$kommando->execute();
echo 'SQL geschickt. <br />';
echo $kommando->affected_rows . ' Zeilen betroffen. <br />';
$db->close();
echo 'Verbindung zu.<br />';
} catch (Exception $e) {
echo 'Fehler: ' . htmlspecialchars($e->getMessage());
}
}
?>SQL:HTML-Code:<form method="POST"> Thema des Trainings: <input type="text" name="titel" /><br /> Name des Trainers: <input type="text" name="trainer" /><br /> Dauer des Trainings: <input type="text" size="2" name="dauer" /><br /> <input type="submit" name="submit" value="Eintragen!" /> </form>
Code :1 2 3 4 5 6 7
create table trainings ( ´id´ int not null auto_increment, ´titel´ varchar(50) not null, ´trainer´ varchar(50) not null, ´dauer´ int not null, primary key(´id´) )ENGINE=InnoDB;
Nun bekomme ich den Fehler:
Code :1
Fatal error: Call to a member function bind_param() on a non-object in C:\xampp\htdocs\pr\dbs.php on line 10
Zeile 10:
Mittlerweile vermute ich dass der Fehler daran liegt da $kommando kein Objekt ist. Habe ohne erfolg nach lösungen gesucht. Ich hoffe Ihr könnt mir helfen.PHP-Code:$kommando->bind_param('ssi', $_POST['titel'], $_POST['trainer'], $dauer);
Für alle Fälle habe ich meinen php.ini drangehängt, villeicht ist da was falsch konfiguriert. Ich gehe eigentlich davon aus dass diese Codeschnipsel fehlerfrei sein sollten.
-
05.12.11 14:02 #2
- Registriert seit
- Oct 2007
- Beiträge
- 31
Werden Dir standardmäßig alle Fehler anzeigt? Sprich Error-Reporting-Level -1 ? Mach' mal ein var_dump() auf $db und $kommando und stell das ganze hier rein.
Spontan würde ich vermuten, dass die Verbindungsdaten nicht korrekt sind.
-
Denke schon dass alle fehler angezeigt werden.
Error_reporting = E_ALL | E_STRICT
(Show all errors, warnings and notices including coding standards.)
Liefert:PHP-Code:<?php
if (isset($_POST['submit']) && isset($_POST['titel']) && isset($_POST['trainer']) &&
isset($_POST['dauer']) && $_POST['titel'] != '' && $_POST['trainer'] != '' &&
(int)$_POST['dauer'] > 0) {
try {
$db = new MySQLi('localhost', 'root', '', 'php');
echo 'Verbindung offen.<br /><br />';
$sql = 'INSERT INTO trainings (titel, trainer, dauer) VALUES (?, ?, ?)';
$kommando = $db->prepare($sql);
echo 'var_dump $komando: <br />';
var_dump($kommando);
echo '<p>';
echo 'var_dump $db: <br />';
var_dump($db);
echo '<p>';
$kommando->bind_param('ssi', $_POST['titel'], $_POST['trainer'], $dauer);
$dauer = (int)$_POST['dauer'];
$kommando->execute();
echo 'SQL geschickt. <br />';
echo $kommando->affected_rows . ' Zeilen betroffen. <br />';
$db->close();
echo 'Verbindung zu.<br />';
} catch (Exception $e) {
echo 'Fehler: ' . htmlspecialchars($e->getMessage());
}
}
?>
Code :1 2 3 4 5 6 7 8 9 10
Verbindung offen. var_dump $komando: bool(false) var_dump $db: object(mysqli)#1 (17) { ["affected_rows"]=> int(-1) ["client_info"]=> string(50) "mysqlnd 5.0.8-dev - 20102224 - $Revision: 310735 $" ["client_version"]=> int(50008) ["connect_errno"]=> int(0) ["connect_error"]=> NULL ["errno"]=> int(1054) ["error"]=> string(38) "Unknown column 'titel' in 'field list'" ["field_count"]=> int(0) ["host_info"]=> string(20) "localhost via TCP/IP" ["info"]=> NULL ["insert_id"]=> int(0) ["server_info"]=> string(6) "5.5.16" ["server_version"]=> int(50516) ["sqlstate"]=> string(5) "42S22" ["protocol_version"]=> int(10) ["thread_id"]=> int(122) ["warning_count"]=> int(0) } Fatal error: Call to a member function bind_param() on a non-object in C:\xampp\htdocs\pr\dbs.php on line 20
Wenn ich die Überprüfung unterhalb der Zeile
mache, kommt nur:PHP-Code:$kommando->bind_param('ssi', $_POST['titel'], $_POST['trainer'], $dauer);
Code :1 2 3
Verbindung offen. Fatal error: Call to a member function bind_param() on a non-object in C:\xampp\htdocs\pr\dbs.php on line 12
Geändert von m_topic (05.12.11 um 14:28 Uhr)
-
05.12.11 14:55 #4
- Registriert seit
- Oct 2007
- Beiträge
- 31
Dein Query ist so nicht korrekt, "Unknown column 'titel' in 'field list'", sprich die Spalte ist in der Tabelle nicht vorhanden, daher konnte keine Prepared Statement erstellt werden.
Das Error-Reporting-Level -1 erfasst auch alle zukünftigen, siehe PHP-Manual (http://de3.php.net/manual/de/functio...eporting-notes)
-
Komisch, denn das Feld ´titel´ existiert eigentlich in der mySQL. Und zwar wurde es so erzeugt:
Code :1 2 3 4 5 6 7
create table trainings ( ´id´ int not null auto_increment, ´titel´ varchar(50) not null, ´trainer´ varchar(50) not null, ´dauer´ int not null, primary key(´id´) )ENGINE=InnoDB;
Muss ich villeicht die Tabelle anrest anlegen?
-
05.12.11 17:41 #6
- Registriert seit
- Oct 2007
- Beiträge
- 31
Ich weiß nicht, ob das bei diesem Design von PhpMyAdmin gewollt ist, aber alle Spalten stehen schon in Hochkommata, bearbeite mal eine Spalte und schaue, ob die Spalte immer noch in Hochkommata steht, wenn ja entferne diese und versuch das ganze jetzt noch einmal.
-
Das wars!
Super, danke viel mal.
Ähnliche Themen
-
Fehler: function bind_param() on a non-object
Von anderes94 im Forum PHPAntworten: 1Letzter Beitrag: 19.03.12, 10:00 -
mysqli bind_param error
Von TMM im Forum PHPAntworten: 5Letzter Beitrag: 28.09.11, 16:10 -
mysql Fehler prepare() und bind_param()
Von crimes im Forum PHPAntworten: 5Letzter Beitrag: 28.04.11, 13:08 -
MYSQLi - bind_param für MIN(FELD)?
Von Trash im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 16.03.11, 20:09 -
mysqli->bind_param dynamisch variablen übergeben
Von rayphi im Forum PHPAntworten: 9Letzter Beitrag: 20.12.10, 12:47





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren