php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack (1) Themen-Optionen Thema bewerten
Alt 25.11.2008, 21:46  
Neuer Benutzer
 
Registriert seit: 25.11.2008
Beiträge: 9
germanit befindet sich auf einem aufstrebenden Ast
Standard mysqli->bind_param()

Hallo,

da ich jetzt schon seit einiger Zeit an diesem Problem hänge, poste ich es jetzt mal hier ins Forum und hoffe auf Lösung .

Es geht um die Mysqli Klasse, genauer gesagt die Methode bind_param().
Die Klasse kenne ich recht gut, und "normales" arbeiten damit bereitet mir keine Probleme,
allerdings möchte ich bin_param() flexible Werte übergeben(Es sollen 4, aber auch z.B. 10 Werte übergeben werden).

PHP-Code:
// SQL 
$statement "UPDATE $table \n SET \n $sFields WHERE $where \n";
// SQL vorbereiten 
$update $this->oDb->prepare($statement);

// HILFE!!!
$update->bind_param($dataTypcall_user_func_array(array( $update'bind_param' ), $sParams ));

// Ausführen 
$update->execute(); 
Es geht um den HILFE!!! Teil. Den Typ der Variablen kann ich per String ($typ='sssi')
übergeben, versuche ich dies bei den Werten, gibt es Fehlermeldungen. (Anzahl der Parameter...)
Beim suchen im Internet bin ich auf call_user_func_array gestoßen, das hilft mir aber auch nicht weiter. Kann mir jemand helfen?

Ich bin dankbar für jeden Rat.
germanit ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 25.11.2008, 21:53  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.988
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ach soo. Jetzt weiß ich glaube ich was Du willst.

Du wendest call_user_func_array falsch an. So wird ein Schuh draus, insofern $sParams Dein Array mit den varibalen Parametern ist:

PHP-Code:
$sParams array_unshift ($sParams ,$dataTyp);
call_user_func_array (array ($update'bind_param'), $sParams); 
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 26.11.2008, 09:26  
Neuer Benutzer
 
Registriert seit: 25.11.2008
Beiträge: 9
germanit befindet sich auf einem aufstrebenden Ast
Standard

Nur um sicher zu gehen-

wenn ich das richtige verstehe ist $sParams mein Array mit Werten und $dataTyp das Array mit den Typen?
PHP-Code:
$sParams array_unshift ($sParams ,$dataTyp); 
germanit ist offline  
Alt 26.11.2008, 11:35  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.988
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Lt. Manual kann als Typ(en?) nur ein String angegeben werden:
Zitat:
bool bind_param ( string types, mixed &var1 [, mixed &...] )
Davon bin ich obigen Code ausgegangen. Mit einem Typen-Array wird das wohl nicht funktionieren.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 26.11.2008, 13:02  
Neuer Benutzer
 
Registriert seit: 25.11.2008
Beiträge: 9
germanit befindet sich auf einem aufstrebenden Ast
Standard

Dann schon mal vielen Dank, werde es heute Abend direkt ausprobieren...

Geändert von germanit (26.11.2008 um 13:49 Uhr).
germanit ist offline  
Alt 27.11.2008, 20:29  
Neuer Benutzer
 
Registriert seit: 25.11.2008
Beiträge: 9
germanit befindet sich auf einem aufstrebenden Ast
Standard

Aktueller Code:

PHP-Code:
$sParams array_unshift ($sParams ,$dataTyp);
call_user_func_array (array ($update'bind_param'), $sParams);  
        
$update->execute(); 
bewirkt leider nicht das gewollte...
Code:
Warning: Wrong parameter count for mysqli_stmt::bind_param() in /opt/lampp/htdocs/php/easyMysqli.php on line 65
Wo liegt der Fehler?
Möchte als Ziel doch nur bind_param($string, $meineVariablenWerte ) übergeben
germanit ist offline  
Alt 27.11.2008, 20:37  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Was gibt
PHP-Code:
var_dump($sParams
aus, bevor Du das Feld innerhalb der Funktion veränderst?
David ist offline  
Alt 27.11.2008, 20:49  
Neuer Benutzer
 
Registriert seit: 25.11.2008
Beiträge: 9
germanit befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
// so kommt das Array an...
array(3) {
  [
0]=>
  
string(4"Chef"
  
[1]=>
  
string(7"8068706"
  
[2]=>
  
int(1)
}

// nach $sParams = array_unshift ($sParams ,$dataTyp);
int(4
Die Datentypen für den ersten Parameter sind 'ssi'
germanit ist offline  
Alt 27.11.2008, 20:50  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.988
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Sorry mein Fehler. Richtig ist:

PHP-Code:
array_unshift ($sParams ,$dataTyp);
call_user_func_array (array ($update'bind_param'), $sParams); 
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 27.11.2008, 20:57  
Neuer Benutzer
 
Registriert seit: 25.11.2008
Beiträge: 9
germanit befindet sich auf einem aufstrebenden Ast
Standard

okay.... vielen, vielen Dank.
Das macht das Leben für mich einfacher

Trotzdem wüsste ich gerne, was die Magie eigentlich genau bewirkt- also warum funktioniert das mit call_user_func_array().

In der Doku habe ich schon nachgeschaut, schlau geworden bin ich daraus nicht so richtig.

Geändert von germanit (27.11.2008 um 21:07 Uhr).
germanit ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

LinkBacks (?)
LinkBack to this Thread: http://www.php.de/php-tipps-2008/49332-mysqli-bind_param.html
Erstellt von For Type Datum
编程王RSS This thread Refback 27.11.2008 03:52

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
MySQLi: bind_param & LIKE snatch-ic Datenbanken 3 22.12.2009 23:09
Schützt mysqli vor SQL-Injections? snatch-ic Datenbanken 6 08.08.2009 15:49
mysqli ersetzen schlurpsel Datenbanken 4 23.11.2008 19:40
MySQLi ausgaben in einer Klasse Forgi PHP-Fortgeschrittene 3 14.09.2008 15:38
[Erledigt] MySQli Problem #Avedo PHP Tipps 2008 2 06.09.2008 23:49
[Erledigt] Problem mit MySQLi Login + Session Raito PHP Tipps 2008 7 29.07.2008 22:49
Verstädnissproblem MySQLI Kein Genie PHP Tipps 2008 2 24.06.2008 16:16
mysqli bind param notyyy PHP Tipps 2008 3 20.05.2008 18:26
Geltungsbereich mysqli Objekt R4v3r PHP Tipps 2007 12 28.03.2007 22:01
PHP5 -> MySQLi erben snatch-ic PHP Tipps 2007 1 08.02.2007 18:05
mysqli als Objekt CC84 PHP-Fortgeschrittene 31 11.05.2006 20:39
MySQL vs. MySQLi Shade PHP Tipps 2007 4 05.11.2005 15:22
Wie verwende ich mysqli? bicpi PHP Tipps 2005-2 5 03.08.2005 22:54
Kein mysqli Objekt möglich?! Datenbanken 8 09.06.2005 18:17
PHP Fatal error: Class 'MySQLi' not found in CSS PHP Tipps 2005 6 13.04.2005 15:24

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysqli bind_param, php bind_param, bind_param, bind_param php, wrong parameter count for mysqli_stmt::bind_param(), warning: wrong parameter count for mysqli_stmt::bind_param(), bind_param mysqli, mysqli bind param, mysqli bind_param array, php mysqli bind_param array, ->bind_param, wrong parameter count for mysqli_stmt::bind_param, mysqli bin_param, php bindparam, mysql bind_param, php bind param, php bind_param(), bind_param(), bind_param update, bindparam php

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:29 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum