Beste manier SQL afhandeling
Ik vroeg mij af hoe je nou het beste kunt checken of je query wel gelukt is of niet gelukt is en hoe je daar dus het beste een foutafhandeling van kunt maken.
Ik doe het meestal zo:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$sql = mysql_query("INSERT INTO slideshow(bla,bla)VALUES('".mysql_real_escape_string($bla)."','".mysql_real_escape_string($bla)."')");
if(mysql_affected_rows() > 0){
echo '<div class="correct">bla is succesvol!<br></div>';
}
else{
echo '<div class="incorrect">bla is milukt!<div>';
}
?>
$sql = mysql_query("INSERT INTO slideshow(bla,bla)VALUES('".mysql_real_escape_string($bla)."','".mysql_real_escape_string($bla)."')");
if(mysql_affected_rows() > 0){
echo '<div class="correct">bla is succesvol!<br></div>';
}
else{
echo '<div class="incorrect">bla is milukt!<div>';
}
?>
Is dit een goeie manier/juiste manier of zou ik het eigenlijk anders moeten doen?
Groetjes
dus dan zou het op deze manier, wel goed zijn:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$sql = "INSERT INTO tabel(bla,bla)VALUES('".mysql_real_escape_string($bla)."','".mysql_real_escape_string($bla)."')";
if(($result = mysql_query($sql)) === true){
echo '<div class="correct">Bla is succesvol!</div>';
}
else{
echo '<div class="incorrect">Bla is milukt!</div>';
}
?>
$sql = "INSERT INTO tabel(bla,bla)VALUES('".mysql_real_escape_string($bla)."','".mysql_real_escape_string($bla)."')";
if(($result = mysql_query($sql)) === true){
echo '<div class="correct">Bla is succesvol!</div>';
}
else{
echo '<div class="incorrect">Bla is milukt!</div>';
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
$sql = "SELECT foto FROM slideshow";
$result = mysql_query($sql);
if($result === true){
echo '
<table>
<tr>
<td>
Foto
</td>
<td>
Categorie
</td>
</tr>
';
While($row = mysql_fetch_assoc($result)){
echo $row['foto'];
}
echo '
</tabe>
';
}
else{
echo 'lukt niet';
}
?>
$sql = "SELECT foto FROM slideshow";
$result = mysql_query($sql);
if($result === true){
echo '
<table>
<tr>
<td>
Foto
</td>
<td>
Categorie
</td>
</tr>
';
While($row = mysql_fetch_assoc($result)){
echo $row['foto'];
}
echo '
</tabe>
';
}
else{
echo 'lukt niet';
}
?>
en als ik de if statement weg haal. dan krijg ik in de while gewoon netjes resulaat
Gewijzigd op 24/04/2012 16:47:12 door Teun Hesseling
For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error.
For other type of SQL statements, INSERT, UPDATE, DELETE, DROP, etc, mysql_query() returns TRUE on success or FALSE on error.
Zoals ook in de tutorial staat gebruik dan bijv. === false om een eventuele fout af te vangen en een 'else' om de juiste werking af te vangen.
Gewijzigd op 24/04/2012 16:56:44 door Jurgen B
mysql_affected_rows of er ook echt iets is toegevoegd aan de database.
Ook al is een insert 'gelukt' en je ziet geen error kan het op de achtergrond nog steeds fout gaan dus kijk altijd met Ik probeer het nog steeds via de tutorial manier
behalve dan dat ik van false true maak.
Maar ik krijg het nog steeds niet echt werkend, hij blijft uitkomen op de else met als echo 'Fout'.
Of ik doe het echt totaal fout, en zie de fout niet, maar daarvoor zit ik natuurlijk op dit forum.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
$sql = "SELECT foto FROM slideshow";
if(($result = mysql_query($sql)) === true){
echo '
<table>
<tr>
<td>
Foto
</td>
</tr>
';
While($row = mysql_fetch_assoc($result)){
echo '<tr><td>'.$row['foto'].'</td></tr>';
}
echo '
<tr>
<td>
<input type="button" onClick="location.href=\'beheer&edit=slideadd\'" value="Foto toevoegen">
</td>
</tr>
</table>
';
}
elseif (mysql_num_rows($result) == 0){
echo 'Niet veel bijzonders.';
}
else{
echo 'Fout.';
}
?>
$sql = "SELECT foto FROM slideshow";
if(($result = mysql_query($sql)) === true){
echo '
<table>
<tr>
<td>
Foto
</td>
</tr>
';
While($row = mysql_fetch_assoc($result)){
echo '<tr><td>'.$row['foto'].'</td></tr>';
}
echo '
<tr>
<td>
<input type="button" onClick="location.href=\'beheer&edit=slideadd\'" value="Foto toevoegen">
</td>
</tr>
</table>
';
}
elseif (mysql_num_rows($result) == 0){
echo 'Niet veel bijzonders.';
}
else{
echo 'Fout.';
}
?>
Gewijzigd op 25/04/2012 11:16:46 door Teun Hesseling
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
$sql = "SELECT foto FROM slideshow";
//als het resultaat NIET fout is
if(($result = mysql_query($sql)) !== false){
//hij is geslaagd dus we kunnen rows tellen
if (mysql_num_rows($result) == 0){
echo 'Niet veel bijzonders.';
}
else{
echo '
<table>
<tr>
<td>
Foto
</td>
</tr>
';
//uitlezen
while($row = mysql_fetch_assoc($result)){
echo '
<tr>
<td>
'.$row['foto'].'
</td>
</tr>
';
}
echo '
<tr>
<td>
<input type="button" onClick="location.href=\'beheer&edit=slideadd\'" value="Foto toevoegen">
</td>
</tr>
</table>
';
}
}
else{
echo 'Fout.';
}
?>
$sql = "SELECT foto FROM slideshow";
//als het resultaat NIET fout is
if(($result = mysql_query($sql)) !== false){
//hij is geslaagd dus we kunnen rows tellen
if (mysql_num_rows($result) == 0){
echo 'Niet veel bijzonders.';
}
else{
echo '
<table>
<tr>
<td>
Foto
</td>
</tr>
';
//uitlezen
while($row = mysql_fetch_assoc($result)){
echo '
<tr>
<td>
'.$row['foto'].'
</td>
</tr>
';
}
echo '
<tr>
<td>
<input type="button" onClick="location.href=\'beheer&edit=slideadd\'" value="Foto toevoegen">
</td>
</tr>
</table>
';
}
}
else{
echo 'Fout.';
}
?>
edit: tabs werken niet mee-.-
Gewijzigd op 25/04/2012 11:24:18 door gerhard l
Dankje ger, blijkbaar wertk !== false wel en === true niet. terwijl dat in mijn ogen eigenlijk het zelfde betekent. Zou iemand mij anders dan is uit kunnen leggen wat dan dus het verschil is tussen !== false (ongelijk aan false dus true) en === true?
evalueert alleen naar true als $a de waarde true heeft. Voor al het andere evalueert het naar false.
$a !== false
evalueert alleen naar false als $a de waarde false heeft. Voor al het andere evalueert het naar true.
Dat is het verschil....
Aangezien $result alleen false kan zijn, of een resource, kan je nooit === true gebruiken. Het zal namelijk nooit true zijn. Je kan wel !== false gebruiken, want in de meeste gevallen zal het niet false zijn, maar een resource.
De weg van de logica die gevolgd wordt.
Daarom zeg ik niet dat je dit altijd in zo'n structuur moet steken; het is meer informatief
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$mysqlLink_ofwel_false = mysql_connect('localhost', 'root', ''); // mysql_connect: Returns a MySQL link identifier on success or FALSE on failure.
if($mysqlLink_ofwel_false === FALSE) {
// indien je hier terecht komt, is er geen connectie gemaakt met mySQL
}
else {
if(mysql_select_db('mysql', $mysqlLink_ofwel_false) === FALSE) { // mysql_select_db: Returns TRUE on success or FALSE on failure.
// indien je hier terecht komt, is de gekozen database niet geselecteerd
}
else {
$sql_query = "SELECT Host, User, Password, Select_priv, Insert_priv, Update_priv FROM user";
$mysqlResource_ofwel_false = mysql_query($sql_query); // mysql_query: For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error.
if ($mysqlResource_ofwel_false === FALSE) {
// indien je hier terecht komt, geeft de select query een mySQL error.
// In dit geval is er dus een fout in de manier waarop je je sql-string hebt opgebouwd
}
else {
while($row_ofwel_false = mysql_fetch_array($mysqlResource_ofwel_false)) { // mysql_fetch_assoc: Returns an associative array of strings that corresponds to the fetched row, or FALSE if there are no more rows.
//
echo '<pre>'. print_r($row_ofwel_false, TRUE) .'</pre>';
}
}
}
}
?>
$mysqlLink_ofwel_false = mysql_connect('localhost', 'root', ''); // mysql_connect: Returns a MySQL link identifier on success or FALSE on failure.
if($mysqlLink_ofwel_false === FALSE) {
// indien je hier terecht komt, is er geen connectie gemaakt met mySQL
}
else {
if(mysql_select_db('mysql', $mysqlLink_ofwel_false) === FALSE) { // mysql_select_db: Returns TRUE on success or FALSE on failure.
// indien je hier terecht komt, is de gekozen database niet geselecteerd
}
else {
$sql_query = "SELECT Host, User, Password, Select_priv, Insert_priv, Update_priv FROM user";
$mysqlResource_ofwel_false = mysql_query($sql_query); // mysql_query: For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error.
if ($mysqlResource_ofwel_false === FALSE) {
// indien je hier terecht komt, geeft de select query een mySQL error.
// In dit geval is er dus een fout in de manier waarop je je sql-string hebt opgebouwd
}
else {
while($row_ofwel_false = mysql_fetch_array($mysqlResource_ofwel_false)) { // mysql_fetch_assoc: Returns an associative array of strings that corresponds to the fetched row, or FALSE if there are no more rows.
//
echo '<pre>'. print_r($row_ofwel_false, TRUE) .'</pre>';
}
}
}
}
?>
Gewijzigd op 25/04/2012 13:55:50 door Kris Peeters