Dlaczego mysql_query() nie zwraca false w przypadku błędu

0

Napisałem skrypt, który zarządza bazą danych. Ale mam problem - funkcja mysql_query() w przypadku błędu zwraca inne wartości niż false.Zapytania dobrze działają - wprowadzają zmiany w bazie. Gdzie popełniłem błąd. Nie interesuje mnie inny kod, tylko wskazanie mojego błędu

<?php
session_start();
if(!isSet($_SESSION['litera'])){
	$_SESSION['litera']="";
}
?>
<!DOCTYPE html>
<html lang="pl">
<head>
<title>Zarządzane danymi w tabeli Users</title>
<meta charset="utf-8"/>
<meta name="robots" content="noindex,nofollow"/>
<meta name="description" content=""/>
<meta name="keywords" content=""/>
<style>
body {
background-image: url('tlo.jpg');
font-family: "Times New Roman", Times, serif;
font-size: 11pt;
}

header {
margin: 0 auto;
text-align: center;
color: maroon;
font-size: 14pt;
width: 800px;
margin-bottom: 10px;
background-image: url('tlo1.jpg');
}

article {
float: left;
width: 590px;
margin-bottom: 10px;
background-image: url('tlo1.jpg');
}

section {
margin-left: 5px;
margin-right: 5px;
text-align: left;
}

aside {
float: left;
clear: right;
width: 200px;
margin-left: 10px;
margin-bottom: 10px;
text-align: center;
background-image: url('tlo2.jpg');
}

footer {
clear: both;
color: maroon;
margin: 0 auto;
width: 800px;
background-image: url('tlo1.jpg');
text-align: center;
}

img {
border: none;
margin: 5px 5px 5px 5px;
}

h2 {
color: green;
margin-bottom: 0px;
margin-top: 5px;
font-size: 12pt;
text-align: center;
}

a {
text-decoration: none;
color: purple;
}
</style>
</head>
<body>
<header>
Ćwiczenie 26.5 w języku PHP5 - autor: xpeye
<nav>
</nav>
</header>
<div style="width: 800px; margin: 0 auto; text-align: center;">
<article>
<section>
<h2>Zarządzane danymi w tabeli Users</h2>
<?php
$formularz=<<<IDI1
<form method="GET" action="http://localhost/test/26.5.php">
Wybierz sposób zmiany danych:<br/>
<input type="radio" name="radio1" value="d">Dodanie rekordu<br/>
<input type="radio" name="radio1" value="m">Modyfikacja rekordu<br/>
<input type="radio" name="radio1" value="u">Usuwanie rekordu<br/>
<input type="submit">
</form>
IDI1;
$formularzd=<<<IDI1
<form method="POST" action="http://localhost/test/26.5.php">
Podaj nazwę urzytkownika: <input type="text" name="nazwa"><br/>
Podaj haslo: <input type="password" name="haslo"><br/>
<input type="submit">
</form>
IDI1;
$formularzm=<<<IDI1
<form method="POST" action="http://localhost/test/26.5.php">
Podaj starą nazwę urzytkownika: <input type="text" name="nazwa1"><br/>
Podaj nową nazwę urzytkownika: <input type="text" name="nazwa2"><br/>
Podaj haslo: <input type="password" name="haslo"><br/>
<input type="submit">
</form>
IDI1;
$formularzu=<<<IDI1
<form method="POST" action="http://localhost/test/26.5.php">
Podaj nazwę urzytkownika: <input type="text" name="nazwa"><br/>
<input type="submit">
</form>
IDI1;
if(!$baza=@mysql_connect("localhost", "php", "test")){
	echo "Wystąpił błąd podczas połączenia z serwerem MySQL";
}
else if(!@mysql_select_db("testphp")){
	@mysql_close($baza);
	echo "Wystąpił błąd podczas połączenia z bazą danych MySQL";
}
else{
	if($_SESSION['litera']==""){
		if(!isSet($_GET['radio1'])){
			echo $formularz;
			$dzialanie="";
		}
		else{
			$dzialanie=$_GET['radio1'];
		}
		$_SESSION['litera']=$dzialanie;
	}
	$dzialanie=$_SESSION['litera'];
	if($dzialanie=='d'){
		if(!isSet($_POST['nazwa'])){
			echo $formularzd;
		}
		else if($_POST['nazwa']==""||$_POST['haslo']==""){
			echo $formularzd;
			echo "<br/><br/>Wypełnij wszystkie pola";
		}
		else{
			$nazwa=$_POST['nazwa'];
			$haslo=$_POST['haslo'];
			$zapytanie1="SELECT nazwa FROM Users WHERE nazwa=\"$nazwa\"";
			$zapytanie2="INSERT INTO Users VALUES(\"$nazwa\", \"$haslo\")";
			if($wynik=mysql_query($zapytanie1,$baza)){
				echo $formularzd;
				echo "<br/><br/>Rekord o takiej nazwie już istnieje - podaj inną";
			}
			else{
				if(!$wynik=mysql_query($zapytanie2,$baza)){
					echo $formularzd;
					echo "<br/><br/>Rekord nie został dodany z powodu błędu";
				}
				else{
					echo "Rekord został dodany";
					unset($_SESSION['litera']);
					session_destroy();
				}
			}
		}
	}
	else if($dzialanie=='m'){
		if(!isSet($_POST['nazwa1'])){
			echo $formularzm;
		}
		else if($_POST['nazwa1']==""||$_POST['nazwa2']==""||$_POST['haslo']==""){
			echo $formularzm;
			echo "<br/><br/>Wypełnij wszystkie pola";
		}
		else{
			$nazwa1=$_POST['nazwa1'];
			$nazwa2=$_POST['nazwa2'];
			$haslo=$_POST['haslo'];
			$zapytanie="UPDATE Users SET nazwa=\"$nazwa2\", haslo=\"$haslo\" WHERE nazwa=\"$nazwa1\"";
			if(!$wynik=mysql_query($zapytanie,$baza)){
				echo $formularzm;
				echo "<br/><br/>Rekord nie został zmodyfikowany z powodu błędu";
			}
			else{
				echo "Rekord został zmodyfikowany";
				unset($_SESSION['litera']);
				session_destroy();
			}
		}
	}
	else if($dzialanie=='u'){
		if(!isSet($_POST['nazwa'])){
			echo $formularzu;
		}
		else if($_POST['nazwa']==""){
			echo $formularzu;
			echo "<br/><br/>Wypełnij pole";
		}
		else{
			$nazwa=$_POST['nazwa'];
			$zapytanie="DELETE FROM Users WHERE nazwa=\"$nazwa\"";
			if(!$wynik=mysql_query($zapytanie,$baza)){
				echo $formularzu;
				echo "<br/><br/>Rekord nie został usunięty z powodu błędu";
			}
			else{
				echo "Rekord został usunięty";
				unset($_SESSION['litera']);
				session_destroy();
			}
			
		}
	
	}
	echo "<h2 style=\"margin-top: 20px;\">Wyświetlanie danych z tabeli Users z bazy MySQL</h2>";
	$zapytanie='SELECT * FROM Users';
	if(!$wynik=mysql_query($zapytanie, $baza)){
		echo "Wystąpił błąd podczas zapytania do bazy danych MySQL";
	}
	else{
		echo "<table style=\"margin: 0 auto;\">";
		while($wiersz=mysql_fetch_row($wynik)){
			$a=count($wiersz);
			echo "<tr>";
			for($i=0;$i<$a;$i++){
				echo "<td>$wiersz[$i]</td>";
			}
			echo "</tr>";
		}
		echo "</table>";
		if(!@mysql_close($baza)){
			echo "Wystąpił błąd podczas zamykania połączenia z bazą danych MySQL";
		}
	}
}
?>
</section>
</article>
<aside>
<section>
<img src="html5.jpg" style="width: 180px; height: 180px;" alt="Logo HTML5"/>
</section>
</aside>
</div>
<footer>
<small>Wszystkie prawa zastrzeżone</small>
</footer>
</body>
</html>
0

Po pierwsze, które mysql_query?
Po drugie jak działa to po co ma zwracać FALSE?
Po trzecie słyszałeś kiedyś o MVC? Wymaż to co niepotrzebne lub podziel to na pliki bo aż w oczy kuje.

0

Ale mam problem - funkcja mysql_query() w przypadku błędu zwraca inne wartości niż false

A dokładniej?

Tak swoją drogą to wstawiasz wartości z $_POST prosto do zapytania... Zainteresuj się bezpieczeństwem, zacznij używać choćby PDO

0

Już sobie dałem radę - wykorzystałem funkcję mysql_affected_rows(). Wielkie dzięki

0

Błąd zapytania, a brak zmodyfikowania czegokolwiek (zapytanie wykonane poprawnie) to dwie różne rzeczy! Kod masz dziurawy i paskudny BTW, lepiej tego nie upubliczniaj, bo byle gimnazjalista Ci to rozwali ;)

0

Ja go nie upubliczniam, miałem tylko napisać skrypt, który pozwala na dodawanie, modyfikację i usuwanie rekordu i chyba mi się udało

1 użytkowników online, w tym zalogowanych: 0, gości: 1