update query met voorwaarde vanuit andere tabel
nu heb ik een andere tabel waar alleen nummers en een datum staan. Al deze nummers kunnen in die andere tabel de status closed krijgen. nu wilde ik dat dus doen met de volgende query maar daar heb ik wat hulp bij nodig. ik dacht aan zoiets:
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
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
<body>
</p>
<table width="213" border="0" align="center">
<tr>
<td width="207"><input type="submit" name="nummer" value="bevestig" /></td>
</tr>
</table>
<p> </p>
<p> </p>
<p>
<form name="nummer" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<?php
if($_SERVER['REQUEST_METHOD'] == "POST"){
if(isset($_POST['nummer']) != NULL){//ticketnummer aangevinkt, value meegegeven
$sql="UPDATE
ft_form_7
SET
status='closed' AND
WHERE
ft_form_7.nummer = case.nummer";
//echo "$sql";
if(!mysql_query($sql)){
echo 'Er is een fout opgetreden: '.mysql_error();
}
else{
if(mysql_affected_rows() > 1){
echo 'Er zijn '.mysql_affected_rows().' rijen aangepast.';
}
else{
echo 'Er is 1 rij aangepast.';
}
}
}
}
foreach ($_POST as $key=>$waarde)
{
echo $key.": ".$waarde."<br/>\n";
}
?>
</form>
</body>
</p>
<table width="213" border="0" align="center">
<tr>
<td width="207"><input type="submit" name="nummer" value="bevestig" /></td>
</tr>
</table>
<p> </p>
<p> </p>
<p>
<form name="nummer" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<?php
if($_SERVER['REQUEST_METHOD'] == "POST"){
if(isset($_POST['nummer']) != NULL){//ticketnummer aangevinkt, value meegegeven
$sql="UPDATE
ft_form_7
SET
status='closed' AND
WHERE
ft_form_7.nummer = case.nummer";
//echo "$sql";
if(!mysql_query($sql)){
echo 'Er is een fout opgetreden: '.mysql_error();
}
else{
if(mysql_affected_rows() > 1){
echo 'Er zijn '.mysql_affected_rows().' rijen aangepast.';
}
else{
echo 'Er is 1 rij aangepast.';
}
}
}
}
foreach ($_POST as $key=>$waarde)
{
echo $key.": ".$waarde."<br/>\n";
}
?>
</form>
</body>
Code (php)
1
2
3
4
5
2
3
4
5
UPDATE ft_form_7
SET status = 'closed'
WHERE nummer IN (
SELECT nummer
FROM andere_tabel )
SET status = 'closed'
WHERE nummer IN (
SELECT nummer
FROM andere_tabel )
Wat doet deze query?
Met die laatste subquery worden alle nummers uit die andere tabel opgehaald, de nummers die in ft_form_7 dus gesloten kunnen worden. Vervolgens worden die gegevens gebruikt in een IN() statement.
Dat zorgt ervoor dat alle nummers uit ft_form_7 die ook voorkomen in de andere tabel gematched en dus gesloten worden.
Er is een fout opgetreden: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'case )' at line 5nummer: bevestig
volgens mij is de query nog niet af of zie ik dat verkeerd?
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Dit is wat ik nu heb:
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
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
<body>
</p>
<p> </p>
<p> </p>
<p>
<form name="nummer" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<?php
if($_SERVER['REQUEST_METHOD'] == "POST"){
if(isset($_POST['close']) != NULL){//ticketnummer aangevinkt, value meegegeven
$sql="UPDATE ft_form_7
SET status = 'closed'
WHERE nummer= 'IN (
SELECT nummer
FROM case)'";
//echo "$sql";
if(!mysql_query($sql)){
echo 'Er is een fout opgetreden: '.mysql_error();
}
else{
if(mysql_affected_rows() > 1){
echo 'Er zijn '.mysql_affected_rows().' rijen aangepast.';
}
else{
echo 'Er is 1 rij aangepast.';
}
}
}
}
/*foreach ($_POST as $key=>$waarde)
{
echo $key.": ".$waarde."<br/>\n";
} */
?>
<table width="213" border="0" align="center">
<tr>
<td width="207"><input type="submit" name="close" value="bevestig" /></td>
</tr>
</table>
</form>
</body>
</html>
</p>
<p> </p>
<p> </p>
<p>
<form name="nummer" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<?php
if($_SERVER['REQUEST_METHOD'] == "POST"){
if(isset($_POST['close']) != NULL){//ticketnummer aangevinkt, value meegegeven
$sql="UPDATE ft_form_7
SET status = 'closed'
WHERE nummer= 'IN (
SELECT nummer
FROM case)'";
//echo "$sql";
if(!mysql_query($sql)){
echo 'Er is een fout opgetreden: '.mysql_error();
}
else{
if(mysql_affected_rows() > 1){
echo 'Er zijn '.mysql_affected_rows().' rijen aangepast.';
}
else{
echo 'Er is 1 rij aangepast.';
}
}
}
}
/*foreach ($_POST as $key=>$waarde)
{
echo $key.": ".$waarde."<br/>\n";
} */
?>
<table width="213" border="0" align="center">
<tr>
<td width="207"><input type="submit" name="close" value="bevestig" /></td>
</tr>
</table>
</form>
</body>
</html>
Jij hebt daar staan WHERE nummer = 'IN ... ', maar zo klopt het niet. Die = en die quotes moeten daar weg. Het is toch geen string die je daar neerzet, het is een bewerking waar een resultaat uit rolt.
Er is een fout opgetreden: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'case)' at line 5
dus dit komt uit deze query:
Code (php)
1
2
3
4
5
2
3
4
5
$sql="UPDATE ft_form_7
SET status = 'closed'
WHERE nummer IN (
SELECT nummer
FROM case)";
SET status = 'closed'
WHERE nummer IN (
SELECT nummer
FROM case)";
Gewijzigd op 01/01/1970 01:00:00 door Rob
Je zult die tabel dus een andere naam moeten geven.
Gewijzigd op 01/01/1970 01:00:00 door Rob
Zo vind ik het veel netter en begrijpelijker. Alles werkt nu zoals ik had gewild.
Hartelijk dank voor je support !!!