session in query verwerken
Indien ik bij $level en $user getallen neerzet werkt het wel.
Zie onderstaand het script:
<php
$level = $_SESSION['level'] ; // LEVEL (!!!)
$user = $_SESSION['user_id']; // USER ID (!!!)
mysql_query(" UPDATE transactions , users SET
`user_level` = '$level' ,
`transactie_status` = 'betaald'
WHERE transactions.transactie_id = '$_GET[transaction_id]'
AND users.id = '$user'
") or die(mysql_error());
?>
En weet je hoeveel topics er over dit onderwer[ behandeld zijn, al had je gezocht dan had je je oplossing allang gehad!!!!
en als je de sessie weer wilt ophalen in de pagina waar je naartoe gaan na het submitten bijv
en wanneer je het in je query gebruikt ziet het er zo uit
Gewijzigd op 15/02/2012 17:51:19 door Reshad F
Ik heb de sessions al aangemaakt. Deze werken ook gewoon maar wat kan er mis gaan?
Toevoeging op 15/02/2012 17:59:17:
Ook dit pakt hij niet!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
if ($iDEAL->getPaidStatus() == true)
{
mysql_query(" UPDATE transactions , users SET
`user_level` = '".$_SESSION['level']."' ,
`transactie_status` = 'betaald'
WHERE transactions.transactie_id = '$_GET[transaction_id]'
AND users.id = '".$_SESSION['user_id']."'
") or die(mysql_error());
?>
if ($iDEAL->getPaidStatus() == true)
{
mysql_query(" UPDATE transactions , users SET
`user_level` = '".$_SESSION['level']."' ,
`transactie_status` = 'betaald'
WHERE transactions.transactie_id = '$_GET[transaction_id]'
AND users.id = '".$_SESSION['user_id']."'
") or die(mysql_error());
?>
http://www.php.net/session_start nooit vergeet als je met sessies werk.
En een session aan een nieuwe variabele toekennen is overbodig En ook voor session waarden dien je rekening te houden met SQL Injectie. (http://www.php.net/mysql_real_escape_string)
En voor de rest: pas correcte controles, validaties en foutafhandeling toe!!!!
Leren onthouden, dat je En een session aan een nieuwe variabele toekennen is overbodig En ook voor session waarden dien je rekening te houden met SQL Injectie. (http://www.php.net/mysql_real_escape_string)
En voor de rest: pas correcte controles, validaties en foutafhandeling toe!!!!
gebruik geen backticks, echo de mysql_error() even en post even wat je krijgt
Toevoeging op 15/02/2012 18:04:30:
De session wordt gestart aan het begin van de pagina. Nog andere ideen?
Toevoeging op 15/02/2012 18:05:10:
De session wordt gestart aan het begin van de pagina. Nog andere ideen?
Toevoeging op 15/02/2012 18:05:52:
wat zijn backticks?
dat zijn de `````` die je gebruikt zoals bijv bij `user_level`
Toevoeging op 15/02/2012 18:15:33:
helaas dat was niet het probleem! heb nu het volgende zonder de backsticks:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
mysql_query(" UPDATE transactions , users SET
user_level = '".$_SESSION['level']."' ,
transactie_status = 'betaald'
WHERE transactions.transactie_id = '$_GET[transaction_id]'
AND users.id = '".$_SESSION['user_id']."'
") or die(mysql_error());
?>
mysql_query(" UPDATE transactions , users SET
user_level = '".$_SESSION['level']."' ,
transactie_status = 'betaald'
WHERE transactions.transactie_id = '$_GET[transaction_id]'
AND users.id = '".$_SESSION['user_id']."'
") or die(mysql_error());
?>
UPDATE transactions , users
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
mysql_query(" UPDATE transactions , users SET
users.user_level = '".$_SESSION['level']."' ,
transactions.transactie_status = 'betaald'
WHERE transactions.transactie_id = '$_GET[transaction_id]'
AND users.id = '".$_SESSION['user_id']."'
") or die(mysql_error());
?>
mysql_query(" UPDATE transactions , users SET
users.user_level = '".$_SESSION['level']."' ,
transactions.transactie_status = 'betaald'
WHERE transactions.transactie_id = '$_GET[transaction_id]'
AND users.id = '".$_SESSION['user_id']."'
") or die(mysql_error());
?>
Toevoeging op 15/02/2012 18:51:11:
Dit werkt wel: Maar het moet in een variable of session komen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
mysql_query(" UPDATE transactions , users SET
users.user_level = '16' ,
transactions.transactie_status = 'betaald'
WHERE transactions.transactie_id = '$_GET[transaction_id]'
AND users.id = '140'
") or die(mysql_error());
?>
mysql_query(" UPDATE transactions , users SET
users.user_level = '16' ,
transactions.transactie_status = 'betaald'
WHERE transactions.transactie_id = '$_GET[transaction_id]'
AND users.id = '140'
") or die(mysql_error());
?>
Zet even error_reporting(E_ALL); bovenaan je pagina, en check wat er uit komt. Ook even na gaan dat je session_start(); aan roept voordat je ook maar enige output naar de browser stuurt.
Echo je query eens naar het scherm. Klopt het dan met wat je zou verwachten?
Probeer die output eens in je admin panel. Foutmelding?
Waarom haal je '$_GET[transaction_id]' niet buiten quotes in je query?
Overigens staat op http://www.w3schools.com/php/php_mysql_update.asp :
UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value
Daar wordt maar 1 tabel gebruikt. Geen idee of het wel mogelijk is om in 1 query meerdere tabellen tegelijk te updaten.
Obelix en Idefix op 15/02/2012 21:47:54:
Daar wordt maar 1 tabel gebruikt. Geen idee of het wel mogelijk is om in 1 query meerdere tabellen tegelijk te updaten.
Volgens mij kan dat niet. vandaar reeds mijn post:
- SanThe - op 15/02/2012 18:25:35:
Welke van de twee?
UPDATE transactions , users
UPDATE transactions , users
Hoe kan ik dan na 1 if 2 query's uitvoeren?
Door een alter query uit te voeren zal het wel lukken denk ik weet niet of dat de juiste benaming is maar het is dus query uitvoeren in een query, dus eerst query 1 en dan query 2 maar ik denk dat meerdere tables ook met php zelf kan doormiddel van die if. Weet alleen even niet hoe je dat het handigst op kan lossen..
- SanThe - op 15/02/2012 22:18:50:
Volgens mij kan dat niet. vandaar reeds mijn post:
Obelix en Idefix op 15/02/2012 21:47:54:
Daar wordt maar 1 tabel gebruikt. Geen idee of het wel mogelijk is om in 1 query meerdere tabellen tegelijk te updaten.
Volgens mij kan dat niet. vandaar reeds mijn post:
En of dat kan, alleen dan moet je wel de juiste syntax gebruiken.
Even een voorbeeldje wat ik net getest heb op mijn eigen machine:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-- tabel 1
create table update_a(
id int auto_increment,
name varchar(10),
primary key (id)
);
-- tabel 2, link_id is de link naar update_a
create table update_b(
id int auto_increment,
link_id int,
address varchar(10),
primary key (id)
);
-- insert 2 records in beide tabellen
insert into update_a(id, name) values(1,'aaa'),(2,'bbb');
insert into update_b(id, link_id, address) values(1,1,'aaa'),(2,2,'bbb');
create table update_a(
id int auto_increment,
name varchar(10),
primary key (id)
);
-- tabel 2, link_id is de link naar update_a
create table update_b(
id int auto_increment,
link_id int,
address varchar(10),
primary key (id)
);
-- insert 2 records in beide tabellen
insert into update_a(id, name) values(1,'aaa'),(2,'bbb');
insert into update_b(id, link_id, address) values(1,1,'aaa'),(2,2,'bbb');
En dan om update_a.name EN update_b.address in een keer naar andere waardes te zetten:
Code (php)
1
2
3
4
2
3
4
update update_a a
inner join update_b b on a.id = b.link_id
set a.name = 'ccc', b.address = 'ccc'
where a.id=1;
inner join update_b b on a.id = b.link_id
set a.name = 'ccc', b.address = 'ccc'
where a.id=1;
Test het zelf zou ik zeggen.