Variable sql checken
Ik heb heel wat zitten scripten en gegoogled vanavond. Maar hier kom ik niet uit.
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?
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
je moet natuurlijk eerst fetchen!
- sql injectie mogelijk
- geen or die gebruiken -> nette foutafhandeling
- 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
Oke, ik heb nu dit:
Maar ik krijg nog steeds hetzelfde probleem :S
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?
Ik heb het letterlijk van deze website overgenomen http://php.net/manual/en/function.mysql-fetch-assoc.php
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
Bedankt Jasper,
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
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?
Dit staat er in de Db
http://img4.imageshack.us/img4/3432/printscreen2.png
http://img4.imageshack.us/img4/3432/printscreen2.png
En de betaalcode is 1 en niet 0?
Yep Zeker weten.
Het zal vast wel weer kut klinken, maar goed. Is het niet slim om gewoon eerst eens te leren?
Volgens mij doe je maar wat. Zeker als ik naar je database zo kijk.
Volgens mij doe je maar wat. Zeker als ik naar je database zo kijk.
Opzich heb ik wel Php ervaring. Alleen niet zo veel met SQL. En inderdaad script ik niet heel net. Maar daar ligt de fout helaas niet. Dus dat heeft er niet heel veel mee te maken.
En in dit geval is het script letterlijk van Jasper, dus zou misschien aan de SQL database kunnen liggen?
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?




