Variable sql checken
Ik heb in een script dit staan:
$sql = "SELECT * FROM betalingen WHERE random = '".$_SESSION[‘rand’]."'";
$query = mysql_query($sql) or die ( mysql_error () );
if ($query['betaalcode'] == 0){
echo'Je moet eerst betalen';
}
elseif ($query['betaalcode'] !== 0){
echo'je hebt betaald';
}
?>
De waarden in betaalcode is standaard 0. Tenzij er betaald is en er daardoor een betaalcode is ingevoerd. Maar het werkt niet goed.
Ziet iemand wat er fout gaat?
en wat gaat er niet goed?....
Hij lijkt altijd Je moet eerst betalen weer te geven. Ook alstaat er wat anders dan 0
fetchen!
- sql injectie mogelijk
- geen or die gebruiken -> nette foutafhandeling
je moet natuurlijk eerst - sql injectie mogelijk
- geen or die gebruiken -> nette foutafhandeling
Gewijzigd op 14/03/2011 21:40:46 door Jasper DS
Wat is Fetchen?! Met google word ik niet veel wijzer helaas.
klik dan ook op zijn link
Die link was er net nog niet! :P
Quote:
$conn = mysql_connect("localhost", "$mysql_user", "$mysql_password");
if (!$conn) {
echo "Unable to connect to DB: " . mysql_error();
exit;
}
if (!mysql_select_db("$dbname")) {
echo "Unable to select mydbname: " . mysql_error();
exit;
}
$sql = "SELECT betaalcode
FROM betalingen
WHERE random = '".$_SESSION[‘rand’]."'";
$result = mysql_query($sql);
if (!$result) {
echo "Could not successfully run query ($sql) from DB: " . mysql_error();
exit;
}
if (mysql_num_rows($result) == 0) {
echo "No rows found, nothing to print so am exiting";
exit;
}
// While a row of data exists, put that row in $row as an associative array
// Note: If you're expecting just one row, no need to use a loop
// Note: If you put extract($row); inside the following loop, you'll
// then create $userid, $fullname, and $userstatus
while ($row = mysql_fetch_assoc($result)) {
echo $row["betaalcode"];
}
mysql_free_result($result);
if ($row["betaalcode"] == 0){
echo'Je moet eerst betalen';
}
elseif ($row["betaalcode"] !== 0){
$test = $_SESSION[‘rand’];
echo $test;
}
?>
if (!$conn) {
echo "Unable to connect to DB: " . mysql_error();
exit;
}
if (!mysql_select_db("$dbname")) {
echo "Unable to select mydbname: " . mysql_error();
exit;
}
$sql = "SELECT betaalcode
FROM betalingen
WHERE random = '".$_SESSION[‘rand’]."'";
$result = mysql_query($sql);
if (!$result) {
echo "Could not successfully run query ($sql) from DB: " . mysql_error();
exit;
}
if (mysql_num_rows($result) == 0) {
echo "No rows found, nothing to print so am exiting";
exit;
}
// While a row of data exists, put that row in $row as an associative array
// Note: If you're expecting just one row, no need to use a loop
// Note: If you put extract($row); inside the following loop, you'll
// then create $userid, $fullname, and $userstatus
while ($row = mysql_fetch_assoc($result)) {
echo $row["betaalcode"];
}
mysql_free_result($result);
if ($row["betaalcode"] == 0){
echo'Je moet eerst betalen';
}
elseif ($row["betaalcode"] !== 0){
$test = $_SESSION[‘rand’];
echo $test;
}
?>
Maar ik krijg nog steeds hetzelfde probleem :S
ik zie je nergens fetchen?
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
44
45
46
47
48
49
50
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
44
45
46
47
48
49
50
<?php
# sql-debug: bovenaan script
# sql debug
define('DEBUG_MODE',true); // true == aan, false == uit
# functie voor sql debug
function showSQLError($sql,$error,$text='Error')
{
if (DEBUG_MODE)
{
return '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
}
else
{
return $text;
}
}
# je query: op gewenste plaats
$sql = "SELECT betaalcode
FROM betalingen
WHERE random = '".mysql_real_escape_string($_SESSION['rand']."'";
if(($query = mysql_query($sql)) === false )
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql,mysql_error(),'Fout met database.');
}
else
{
# query is gelukt -> fetchen
$row = mysql_fetch_assoc($query),
# Rows uitlezen en afhandelen
if($row['betaalcode'] == 0)
{
echo'Je moet eerst betalen';
}
else
{
echo 'je hebt betaald';
}
}
?>
# sql-debug: bovenaan script
# sql debug
define('DEBUG_MODE',true); // true == aan, false == uit
# functie voor sql debug
function showSQLError($sql,$error,$text='Error')
{
if (DEBUG_MODE)
{
return '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
}
else
{
return $text;
}
}
# je query: op gewenste plaats
$sql = "SELECT betaalcode
FROM betalingen
WHERE random = '".mysql_real_escape_string($_SESSION['rand']."'";
if(($query = mysql_query($sql)) === false )
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql,mysql_error(),'Fout met database.');
}
else
{
# query is gelukt -> fetchen
$row = mysql_fetch_assoc($query),
# Rows uitlezen en afhandelen
if($row['betaalcode'] == 0)
{
echo'Je moet eerst betalen';
}
else
{
echo 'je hebt betaald';
}
}
?>
gebruik [code][/code] tags
lees dit nog eens goed door nette foutafhandeling
+ de sql beginners handleiding.
Gewijzigd op 14/03/2011 22:03:19 door Jasper DS
Ik ga even kijken hoever ik daarmee kom. En even kijken hoe dit precies werkt. Want is anders dan ik eerst dacht.
Toevoeging op 14/03/2011 22:18:3:
Ik snap het echt niet. betaalcode is nu 1 en bij blijft geven 'Je moet eerst betalen'
:S
Gewijzigd op 14/03/2011 22:18:47 door Wouterjan Muchu
Staat het wel goed in de database?
En de betaalcode is 1 en niet 0?
Yep Zeker weten.
Volgens mij doe je maar wat. Zeker als ik naar je database zo kijk.
En in dit geval is het script letterlijk van Jasper, dus zou misschien aan de SQL database kunnen liggen?
Ja. Php heeft niks met sql te maken. Toevallig is het zo dat je in php via sql een database kan benaderen. Dus eerst maar wat in sql verdiepen?