komisches Problem mit prepared statements aus mysqli

  • Themenstarter Themenstarter sw33tlull4by
  • Beginndatum Beginndatum
S

sw33tlull4by

Guest
Hi!
PHP-Version ist 5.2
Server ist Apache 2.2.9
Mysqlverion 5.0.77

Ich habe in meinem Skript nun stückweise anfällige queries durch prepared statements ersetzt.
Nun bin ich beim Loginskript und da passiert etwas was ich nicht verstehe und seit einiger Zeit auch nicht beheben kann.

PHP:
<?php
      ..............................
	$conn_id = new mysqli($dbhost,$proxyuser,$proxypass,$database);
	
	if(mysqli_connect_errno())
	{
         .....errorhandeling.....
	}
	else
	{


		$statement = $conn_id->prepare("select newpass from login where user =? and pass=?");
		if(!is_object($statement))
			print "<br> Das Objekt konnte nicht erstellt werden<br><br>";//das errorhandeling ist nur zu testzwecken,wird später ersetzt
		$statement->bind_param("ss",$_POST['user'],$_POST['pass']);
		$statement->execute();

		
		/*Überpruefen ob die Abfrage ein Ergebnis hat*/
		if($statement->affected_rows>0)
		{
			/*Auslesen des Resultates*/
			$statement->bind_result($row);
			$statement->fetch();
			
			print "Here is the result:".$row."<br>";
			
			/*Speicherung der Logindaten*/
			$statement->close();
			$_SESSION['user'] = $_POST['user'];
			$_SESSION['pass'] = $row;
			$_SESSION['host'] = $dbhost;
			.....
		}
		else
		{
			....errorhandling
		}
	}
 ?>

Alles funktioniert, aber sobald ich abfrage, wieviele Zeilen betroffensind bekomme ich -1 raus.
$statement->errno gibt 0 zurrueck, in den logs taucht auch nichts auf.

Sobald ich die bedingung in der ifabfrage aber umkehre, also
$statement->affected_rows<=0 schreibe laeuft alles, ich bekomme die richtigen werte zurrueck.
Weiss jemand was da los ist?
mfg

sw33t
 
Hallo,

Object oriented style (property):
mysqli_stmt
int $affected_rows;

Procedural style :
int mysqli_stmt_affected_rows ( mysqli_stmt $stmt )

Returns the number of rows affected by INSERT, UPDATE, or DELETE query.
This function only works with queries which update a table. In order to get the number of rows from a SELECT query, use mysqli_stmt_num_rows() instead.
http://de.php.net/manual/en/mysqli-stmt.affected-rows.php

mfg, metax.
 
Zurück
Oben