bind param Werte an mySQL

cschramm

Grünschnabel
Hallo erstmal,

Ich bin kein Profi auf dem Gebiet PHP, also verzeiht mir bitte, wenn mein Problem einfach zu Simpel ist. - Leider habe ich nach reichlicher Recherche im Forum und auf Google nichts gefunden und mich deshalb hier registriert. (nach dem falschen gesucht? )

Hier kommt jetzt der Problemcode:
PHP:
try{
		$connection = new MySQLi('localhost', 'root', ' ','test');
		$sql_search = "SELECT `MYSQL Create`,`MYSQL ADD`,`Type`, `Array`   FROM `usm_f8` WHERE `Table-ID` = ? ";
		
                $command = $connection -> prepare($sql_search);
		$command ->bind_param('s', $magicnum);
		$command -> execute();
		
 	         //var_dump($command);
		$command -> bind_result($CREATE , $ADD , $Type, $Array);

		echo $CREATE . '<br /> <br />' . $ADD . '<br /> <br />' . $Array;
		} catch(Exeption $e) { echo "Fehler:".htmlspecialchars($e->getMessage());
}

Mein Problem liegt in der bind_param Zeile, die magicnum wird aus einem Dokument ausgelesen und kommt wie zu sehen als String.
Das Problem ist, dass wenn ich einen (richtigen) Wert von Hand eintrage funktioniert es. Sobald ich die Funktion (welche genau den selben Rückgabewert liefert wie der von Hand eingegebene Wert) nutze, bleibt meine Seite weiß. (auch keine Fehlermeldungen)

Meine Vermutung wäre irgendwas mit den Hochkommas oder für dieses Problem eine komplett andere Funktion zu verwenden, aber ich bin noch nicht so bewandert und kenne keine Alternative.
(mit prepared statements)

Ich hoffe Ihr könnt mir helfen.
Vielen Dank schon mal,
christian
 
Zuletzt bearbeitet:
Hi,

hast du in deinem Test-Code error_reporting auf E_ALL (am besten E_ALL | E_STRICT) und ini_set('display_errors', 1) eingebaut? Möglicherweise ist die Fehler-Anzeige deaktiviert?

Hast du auch mal mysqli::$error, mysqli::$errno und mysqli::$error_list geprüft, nachdem du den prepare() und bind_param() gerufen hast?

Also evtl. mal so:

PHP:
try{
        $connection = new MySQLi('localhost', 'root', ' ','test');
        $sql_search = "SELECT `MYSQL Create`,`MYSQL ADD`,`Type`, `Array`   FROM `usm_f8` WHERE `Table-ID` = ? ";
        
        $command = $connection -> prepare($sql_search);
        if( $connection->$errno > 0 )
            throw new Exception( $connection->error );
        $command ->bind_param('s', $magicnum);
        if( $connection->$errno > 0 )
            throw new Exception( $connection->error );
        $command -> execute();
        if( $connection->$errno > 0 )
            throw new Exception( $connection->error );
        
              //var_dump($command);
        $command -> bind_result($CREATE , $ADD , $Type, $Array);
        if( $connection->$errno > 0 )
            throw new Exception( $connection->error );

        echo $CREATE . '<br /> <br />' . $ADD . '<br /> <br />' . $Array;
        } catch(Exeption $e) { echo "Fehler:".htmlspecialchars($e->getMessage());
}

Im Übrigen wirft mysqli IIRC keine Exceptions, sodass ein try-catch() nicht zielführend ist. Daher hab ich absichtlich mal die throw new Exception() eingebaut.

Wenn du mit Exceptions arbeiten willst, kann ich die PDO empfehlen.
 

Neue Beiträge

Zurück