űrlap feldolgozás hiba?
Sziasztok!
van egy php-kódom ami nem igazán akar működni!és ezt a hiba üzenetet kapom Warning: mysqli::query() [mysqli.query]: Couldn't fetch mysqli in C:\wamp\www\belep.php on line 40
Hiba!
nem látok semmit a 40.sorba -.- valaki esetleg?
■ van egy php-kódom ami nem igazán akar működni!
<?php
if(isset($_POST["form_submit"])) {
$username = $_POST["username"];
$password1 = $_POST["password1"];
$password2 = $_POST["password2"];
$email1 = $_POST["email1"];
$email2 = $_POST["email2"];
$username_regex = '/^[a-z0-9\_\-\.]{3,10}$/';
$email_regex = '/^([A-z0-9\_\.\-]+)@([a-z0-9\_\-\.]+).([a-z]{2,})$/';
$error_data = false;
$error_avatar = false;
if(!$username) {
echo "<div class=\"message error\">Nincs megadva felhasználónév!</div>";
$error_data = true;
} elseif(strlen($username)<=2) {
echo "<div class=\"message error\">A felhasználónév túl rövid!</div>";
$error_data = true;
} elseif(!preg_match($username_regex, $username)) {
echo "<div class=\"message error\">A felhasználónév nem tartalmazhat nagybetűt / specális karaktert!</div>";
$error_data = true;
} else {
$sql = @ new mysqli("localhost","root","","user");
if($sql->mysqli_errno) {
echo "<div class=\"message error\">Adatbázis hiba: ", $sql->connect_errno." ".$sql->connect_error;
exit();
}
$username = strip_tags($username);
$username = addcslashes($username, "%'=`");
$query = "SELECT `user_username` FROM `user` WHERE `user_username` = '".$username."'";
$result = $sql->query($query) or die("Hiba!");
if($result->num_rows>0) {
echo "<div class=\"message error\">A felhasználónév foglalt!</div>";
$error_data = true;
}
$sql->close();
}
if($password1) {
if($password1!=$password2) {
echo "<div class=\"message error\">A két jelszó nem egyezik!</div>";
$error_data = true;
} elseif(strlen($password1)<=3) {
echo "<div class=\"message error\">A jelszó legalább 4 karakter kell, hogy legyen!</div>";
}
} else {
echo "<div class=\"message error\">Nincs megadva jelszó!</div>";
$error_data = true;
}
if($email1) {
if($email1!=$email2) {
echo "<div class=\"message error\">A két e-mail cím nem egyezik!</div>";
$error_data = true;
} elseif(!preg_match($email_regex, $email1)) {
echo "<div class=\"message error\">Az e-mail cím nem megfelelő formátumú!</div>";
$error_data = true;
} else {
$sql = @ new mysqli("localhost","","","user");
if($sql->connect_errno) {
echo "<div class=\"message error\">Adatbázis hiba: ", $sql->connect_errno." ".$sql->connect_error;
exit();
}
$query = "SELECT `user_email` FROM `user` WHERE `user_email` = '".$email1."'";
$result = $sql->query($query) or die("Hiba!");
if($result->num_rows>0) {
echo "<div class=\"message error\">Ezzel az e-mail címmel már regisztráltak!</div>";
$error_data = true;
}
}
} else {
echo "<div class=\"message error\">Nincs megadva e-mail cím!</div>";
$error_data = true;
}
// csak akkor ellenőrizzük az avatart, ha fel van töltve, illetve
// az űrlap többi mezője nem tartalmaz hibát
if($_FILES["avatar"]["name"]!="" && $error_data==false) {
$avatar_pathinfo = pathinfo($_FILES["avatar"]["name"]);
$avatar_extension = $avatar_pathinfo["extension"];
$avatar_filesize = $_FILES["avatar"]["size"];
$avatar_tmp_name = $_FILES["avatar"]["tmp_name"];
$avatar_dimensions = getimagesize($avatar_tmp_name);
$avatar_mime_type = $avatar_dimensions["mime"];
$allowed_extensions = array("image/jpeg" => "jpg", "image/gif" => "gif", "image/png" => "png");
if(is_uploaded_file($avatar_tmp_name)) {
if($avatar_filesize>20000) {
echo "<div class=\"message error\">A fájlméret nem lehet több, mint 20kbyte.</div>";
$error_avatar = true;
} elseif(!in_array($avatar_extension,$allowed_extensions) || !isset($allowed_extensions[$avatar_mime_type])){
echo "<div class=\"message error\">Nem engedélyezett formátum.</div>";
$error_avatar = true;
} elseif($avatar_dimensions[0]!=100 && $avatar_dimensions[1]!=100) {
echo "<div class=\"message error\">A kép mérete kötelezően 100x100 képpont kell, hogy legyen!</div>";
$error_avatar = true;
} else {
// átnevezi a tmp fájlt egy véletlenszerűen generált fájlnévre
$avatar_local_tmp_name = $username.".".$allowed_extensions[$avatar_mime_type];
// az átnevezett tmp fájlt áthelyezi a saját tmp könyvtárunkba
move_uploaded_file($avatar_tmp_name,"tmp/".$avatar_local_tmp_name);
// saját tmp könyvtárból átmásolja az upload könyvtárba
copy("tmp/".$avatar_local_tmp_name,"upload/".$avatar_local_tmp_name);
// törli a saját tmp fájlt
unlink("tmp/".$avatar_local_tmp_name);
echo "<div class=\"message notice\">Sikeres képfeltöltés!</div>";
}
}
}
if($error_data==false && $error_avatar==false) {
echo "<div class=\"message notice\">Sikeres regisztráció!</div>";
$sql = @ new mysqli("localhost","root","","user");
if($sql->mxsqli_errno) {
echo "<div class=\"message error\">Adatbázis hiba: ", $sql->connect_errno." ".$sql->connect_error;
exit();
}
$query = "INSERT INTO `user` (`user_username`,`user_email`,`user_password`) VALUES ('".$username."', '".$email1."', '".sha1($password1)."')";
$sql->query($query) or die("Hiba!");
}
}
if(!isset($_POST["form_submit"]) || $error_data || $error_avatar) {
?>
Hiba!
nem látok semmit a 40.sorba -.- valaki esetleg?
biztos?
belep.php
? És biztosan ezt a fájlt futtatod?iegn!
de még mindig nem jöttem rá a hibára
Nézd végig az egészet, mert
Az utolsó new mysqli(...) után van egy ilyen.
Esetleg valahol elrontottál zárójel párokat? (ezt most nem tudom ellenőrizni)
Megvan a hiba :) köszi a
És mi volt az?
Mysql
Hiba a feldolgozásnál.
Nemrég kezdtem el PHP-vel foglalkozni,és akadt egy probléma amire nem tudok rájönni.
A lényeg az hogy adatbázisba töltögetik fel az adatot a regisztrált emberek,és be is teszi az adatbázisba az adatokat ahogyan azt én elvárom tőle viszont amikor beadják az adatot "Warning: mysqli::query() [mysqli.query]: Couldn't fetch mysqli in (24.SOR)" és a Fatal error: Call to a member function fetch_array() on a non-object in(25.SOR)" hibát ad ki az oldal,de feltöltötte az adatot.Tehát adat feltöltésnél ki írja a hibát,de az adatokat feltölti,lefrissítem az oldalt és tökéletesen működik.Mi lehet a baj??
Lehet a $info =
$info = $mysqli->query("SELECT login,ak_szoveg,ak_kezdet,ak_vege FROM tabla WHERE login= '" . $_SESSION['login'] . "'");
sorban hibás a query, ezért nem kapsz vissza eredményt, ezért a$row = $info->fetch_array(MYSQLI_NUM);
nem fog tudni lefutni, mivel nincs eredmény. A $_SESSION['login']-t mindenképpen escapelni kellene, vagy használni a prepared statement-eket.Lezárt kapcsolat
1. You're trying to use a database object that you've already closed (as noted by ceo at l-i-e dot com). Reopen your database connection, or find the call to <?php mysqli_close($db); ?> or <?php $db->close(); ?> and remove it.
[...]
Adatfeltöltéskor a 19. sorban lezárod az adatbázis kapcsolatot, így a 24. sorban nem tud lefutni a lekérdezés, így a 25. sorban egy false értéken próbálod meghívni a fetch_array() metódust, ami nyilván nincs rendjén.
Ha frissítesz és nincs feltöltés, akkor nem fut le az adatbázis kapcsolatot lezáró kód, ezért nem kapsz hibát olyankor.
Köszönöm