PHP Problem mit Funktionsaufruf. Bitte um Hilfe!

New member
Hab zur Zeit ein ziemlich nerviges Problem und ich weiß seit einigen Tagen nicht waren dieser Fehler auftritt. Hoffentlich kann mir einer von euch sagen wo der Hund in der ganzen Geschichte begraben ist.

Ganze Funktion getUserByUsername:

Spoiler:


/**
* Ermittelt die Daten f�r einen Benutzer
*
* @param username Benutzername
* @author WoAn 03.10.2011
*/
function getUserByUsername( $username )
{
self::initialize();

$stmt = $this->mySqlDb->prepare( "select * from users where username=?" );

if ( $stmt != false )
{

$isOk = $stmt->bind_param( "s", $username );

if ( $isOk )
{
$isOk = $stmt->execute();
}

if ( $isOk )
{

$isOk = self::evaluateUserData( $stmt, $this );

}

$error = $stmt->error;
$errno = $stmt->errno;

$stmt->close();
}
else
{
$isOk = false;
}


if ( $isOk == false )
{
if ( $error == "" )
{
$error = $this->mySqlDb->error;
$errno = $this->mySqlDb->errno;
}

if ( $error == "" )
{
$lastError = error_get_last();
$error = $lastError['message'];
}

throw new MySqlException( $error, $errno );
}

self::getRights();
$this->worktimes = self::getWorktimeInternal();
$this->transfers = self::getTransfersInternal();
}



Hier der Funktionsaufruf:

Spoiler:
$isOk = self::evaluateUserData( $stmt, $this );


Und hier die Funktion in der es zum Fehler kommt:

Spoiler:


/**
* Ermittelt die Benutzerdaten
*/
private function evaluateUserData( $stmt, $data )
{
$isOk = $stmt->bind_result( $id, $username, $firmId, $defaultTown, $defaultWorktype, $defaultProject,
$defaultOffert, $firstName, $lastName, $email, $passwords, $rights, $birthday, $entry,
$separation, $loginTime, $lastLogin, $defaultStartTime, $defaultEndTime, $defaultPause, $defaultText,
$projectFormat, $mobilePhone, $disabled, $worktime, $holidays );


if ( $isOk )
{
while( $stmt->fetch() )
{
$userData = $data;

if ( is_array( $data ) )
{
$userData = new User();
}

$userData->setId( $id );
$userData->setUsername( $username );
$userData->setFirmId($firmId);
$userData->setDefaultTown($defaultTown);
$userData->setDefaultWorktype($defaultWorktype);
$userData->setDefaultProject($defaultProject);
$userData->setDefaultOffert($defaultOffert);
$userData->setFirstName($firstName);
$userData->setLastName($lastName);
$userData->setEmail($email);
$userData->setPassword($passwords);
$userData->setRights($rights);
$userData->setBirthday($birthday);
$userData->setEntryDate($entry);
$userData->setSeparationDate($seperation);
$userData->setLoginTime($loginTime);
$userData->setLastLogin($lastLogin);
$userData->setdefaultStartTime($defaultStartTime);
$userData->setdefaultEndTime($defaultEndTime);
$userData->setdefaultPause($defaultPause);
$userData->setdefaultText($defaultText);
$userData->setprojectFormat($projectFormat);
$userData->setMobilePhone($mobilePhone);
$userData->setDisabled($disabled);
$userData->setWorktime($worktime);
$userData->setHolidays($holidays);


if ( is_array( $data ) )
{
array_push( $data, $userData );
}

}
}

return( $isOk );
}
}



Fehler:
Spoiler:
mysqli_stmt::bind_result() [ ]: Number of bind variables doesn't match number of fields in prepared statement in D:\xampp1.7\xampp\htdocs\ddev\class\user.php on line 2114


Danke schon im Voraus für eure Hilfe :)
 
Zuletzt bearbeitet:
In dieser Zeile steht das:

Spoiler:
$isOk = $stmt->bind_result( $id, $username, $firmId, $defaultTown, $defaultWorktype, $defaultProject,
$defaultOffert, $firstName, $lastName, $email, $passwords, $rights, $birthday, $entry,
$separation, $loginTime, $lastLogin, $defaultStartTime, $defaultEndTime, $defaultPause, $defaultText,
$projectFormat, $mobilePhone, $disabled, $worktime, $holidays );
 
In der Funktion getUserByUsername und die sieht so aus:

$stmt = $this->mySqlDb->prepare( "select * from users where username=?" );

//Edit: Habe die Funktion getUserByUsername auch im Startpost hinzugefügt.
 
Also für mich sagt die Meldung aus, dass die Anzahl der Spalten im Array $stmt nicht mit denen in:

$isOk = $stmt->bind_result( $id, $username, $firmId, $defaultTown, $defaultWorktype, $defaultProject,
$defaultOffert, $firstName, $lastName, $email, $passwords, $rights, $birthday, $entry,
$separation, $loginTime, $lastLogin, $defaultStartTime, $defaultEndTime, $defaultPause, $defaultText,
$projectFormat, $mobilePhone, $disabled, $worktime, $holidays );

... übereinstimmt.

Habe den Code aber nicht vor mir und PHP ist schon länger her..
 
Ja das ist mir schon klar, aber die Anzahl der Parameter muss passen, ich habs schon zigmal durchgeschaut und abgezählt und und und...
 
Attribut hab ich bestimmt keines vergessen, dass hab ich schon tausendmal kontrolliert. Weiß einfach nicht weiter :mad:
 

Online-Statistiken

Zurzeit aktive Mitglieder
0
Zurzeit aktive Gäste
203
Besucher gesamt
203

Beliebte Forum-Themen

X
Keine passende Antwort gefunden?