hallo habe ein kleines freundesystem erstellt, nur kommt da immer ein Fehler wenn ich ein Freund hinzufügen möchte hier mal der code:
hier noch der Fehler:
Warning: mysqli:repare() [mysqli.prepare]: All data must be fetched before a new statement prepare takes place in /srv/www/httpd/phost/p/de/pytalhost/pokeprof/web/new/Includes/functions.php on line 54
hier die function.php
der fehler kommt nur wenn ich einen freund eintrage
PHP:
<?php
$ret = array();
$ret['filename'] = 'friends.tpl';
$ret['title'] = 'Freunde';
$ret['data'] = array();
if (!$UserID = getUserID($db)) {
return NOT_LOGGED_IN;
}
// Auslesen der Freundesliste
// Wenn Freund aktiviert ist; Enabled = 1
$sql = 'SELECT
Friends.ID,
Friends.UserID,
Friends.FriendID,
User.Username
FROM
Friends
JOIN
User
WHERE
Friends.UserID = User.ID
AND
Enabled = 1';
if (!$stmt = $db->prepare($sql)) {
return $db->error;
}
if (!$stmt->execute()) {
return $stmt->error;
}
$Friends = array();
$stmt->bind_result($ID, $UserID, $Friend, $Username);
$i = 0;
while ($stmt->fetch()) {
$Friends[$i] = $Username;
$i ++;
}
$stmt->store_result();
$stmt->close();
// Auslesen der Freundesliste
// Wenn Freund noch nicht aktiviert ist; Enabled = 0
$sql = 'SELECT
Friends.ID,
Friends.UserID,
Friends.FriendID,
User.Username
FROM
Friends
JOIN
User
WHERE
Friends.UserID = User.ID
AND
Enabled = 0';
if (!$stmt = $db->prepare($sql)) {
return $db->error;
}
if (!$stmt->execute()) {
return $stmt->error;
}
$akt = array();
$stmt->bind_result($ID, $UserID, $Friend, $Username);
$i = 0;
while ($stmt->fetch()) {
$Friends_akt[$i] = $Username;
$i ++;
}
$stmt->store_result();
$stmt->close();
if ('POST' == $_SERVER['REQUEST_METHOD']) {
if (!isset($_POST['Username_friend'])) {
return INVALID_FORM;
}
if($_POST['Username_friend'] == ""){
return EMPTY_FORM;
}
//Neuen Freund eintragen
$sql = 'SELECT
Username
ID
FROM
User
WHERE
ID = ?';
if (!$stmt = $db->prepare($sql)) {
return $db->error;
}
$stmt->bind_param('s',$_POST['Username_friend']);
if (!$stmt->execute()) {
return $stmt->error;
}
if($stmt->num_rows() > 0){
$sql = "INSERT INTO
Friends (UserID, FriendID)
VALUES
(?, ?)";
$stmt = $db->prepare($sql);
if (!$stmt) {
return $db->error;
}
$stmt->bind_param('is', $UserID, $_POST['Username_friend']);
if (!$stmt) {
return $db->error;
}
$stmt->execute();
if (!$stmt) {
return $db->error;
}
}
}
if(isset($Friends_akt)){
$ret['data']['Friends_akt'] = $Friends_akt;
}
$ret['data']['Friends'] = $Friends;
$ret['data']['akt'] = $akt;
return $ret;
?>
hier noch der Fehler:
Warning: mysqli:repare() [mysqli.prepare]: All data must be fetched before a new statement prepare takes place in /srv/www/httpd/phost/p/de/pytalhost/pokeprof/web/new/Includes/functions.php on line 54
hier die function.php
PHP:
function getUserID($db) {
if (!is_object($db)) {
return false;
}
if (!($db instanceof MySQLi)) {
return false;
}
if (!isset($_COOKIE['UserID'], $_COOKIE['Password'], $_COOKIE['Username'])) {
return false;
}
$sql = 'SELECT
ID
FROM
User
WHERE
ID = ? AND
Password = ? AND
Username = ?';
$stmt = $db->prepare($sql);
if (!$stmt) {
return $db->error;
}
$stmt->bind_param('iss', $_COOKIE['UserID'], $_COOKIE['Password'], $_COOKIE['Username']);
if (!$stmt->execute()) {
$str = $stmt->error;
$stmt->close();
return $str;
}
$stmt->bind_result($UserID);
if (!$stmt->fetch()) {
$stmt->close();
return false;
}
$stmt->store_result();
$stmt->close();
return $UserID;
}
der fehler kommt nur wenn ich einen freund eintrage