Hoeveel AND in een UPDATE statement

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 4 volgende »

Chris PHP

Chris PHP

15/05/2012 19:43:44
Quote Anchor link
Zoals de titel luid, hoeveel AND mag je gebruiken in een UPDATE status?

Ik heb nu dit en het gaat niet goed.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$conn
; $selectdb;

$page = intval ($_GET['id']);
$zichtbaar = (isset($_POST['zichtbaar'])) ? 1:0;

$update = mysql_query ("UPDATE tabel SET a_id=".$page." WHERE p_id='".mysql_real_escape_string($_POST['pagina'])."' AND titel='".mysql_real_escape_string($_POST['titel'])."' AND summary='".mysql_real_escape_string($_POST['summary'])."' AND content='".mysql_real_escape_string($_POST['content'])."' AND zichtbaar='".$zichtbaar."'");
$numrow = mysql_num_rows ($update);

if ($update == FALSE) { echo mysql_error(); }
?>

Fouten aangepast!
Gewijzigd op 15/05/2012 20:32:32 door Chris PHP
 
PHP hulp

PHP hulp

29/04/2024 01:51:31
 
Wouter J

Wouter J

15/05/2012 19:47:49
Quote Anchor link
Een paar dingen:
- bouw foutafhandeling in
- ligt het aan de AND's of aan je query?
- weet je zeker dat je query goed is?
- heb je wel eens 1 keer door je code gescannt? Dus regel voor regel woord voor woord nagaan wat er nou precies gebeurd?
- gebruik eens wat meer enters, dat maakt het overzichtelijk
- regel 2 is onnodig

Ik zou al mijn bezittingen erop willen wedden dat je met deze code minimaal 2 1 errors krijgt.

Edit:
Door die niet zo nette manier van scripten had ik even iets over het hoofd gezien.
Gewijzigd op 15/05/2012 19:51:26 door Wouter J
 
- Ariën  -
Beheerder

- Ariën -

15/05/2012 19:49:02
Quote Anchor link
Chris NVT op 15/05/2012 19:43:44:
Ik heb nu dit en het gaat niet goed.

Bedankt dat je dit deelt, dan zal er warschijnlijk wel iets mis zijn.

verder nog meer erover te vertellen? Errors, wat gebeurt er etc...
 
Bart V B

Bart V B

15/05/2012 19:50:34
Quote Anchor link
Waarom moeten daar allemaal and's (heu nieuw werkwoord ;) ) in?
Logischer zou zijn:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

$update
= "UPDATE table SET foo = '".mysql_real_escape_string($_POST['foo'])."',
                            bar = '"
.mysql_real_escape_string($_POST['bart'])."'
                         WHERE
                         id = '"
.mysql_real_escape_string($_GET['id'])."' ";
?>

Gewijzigd op 15/05/2012 20:01:50 door Bart V B
 
Chris PHP

Chris PHP

15/05/2012 19:51:38
Quote Anchor link
@Wouter

- Er zit een foutafhandeling in zie regel 10
- Dat is mijn vraag ik kan zo geen fouten vinden als je idd zoveel AND's mag gebruiken
- Wat kan hier fout aan zijn? de velden zijn juist benaamt.
- Ik heb alles goed doorgelezen en 3x op spelfouten gecontroleerd. Ook geeft Dreamweaver geen syntax errors aan.
- Sorry ik heb een breed scherm met hoge resolutie, past precies op 1 regel bij mij :D
- regel 2 maakt een connectie, ik include een config.php file waar deze gedifineerd worden. Zonder werkt na mijn weten niet.
 
- Mark -

- Mark -

15/05/2012 19:51:58
Quote Anchor link
De query wordt nergens uitgevoerd dus er zal inderdaad niet veel gebeuren.

isset($_POST['send']) is niet echt de manier om te controleren of een formulier wordt verzonden.

Daar hebben we

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

    if($_SERVER['REQUEST_METHOD'] == 'POST'){

        // Het formulier is verzonden.
    }

?>


voor
 
Chris PHP

Chris PHP

15/05/2012 19:54:35
Quote Anchor link
@Aar, ik krijg een errors, ik heb er nu achter regel 10 mysql_error() gezet echter geeft die geen melding. Ik krijg alleen mijn echo te zien 'Sorry er is iets fout gegaan tijdens het bewerken' en uiteraard als ik in de db kijk is er niets gewijzigd.

@Bart, jou voorbeeld doet voor mij niet veel, aangezien ik veel meer velden moet updaten. Als het anders kan graag een voorbeeld met meerdere velden.

Toevoeging op 15/05/2012 19:57:44:

@Mark,

Ik zie wat je bedoeld, laat werken mis je welleens echter met de aanpassing $update = mysql_query ("statement hier"); werkt het nog steeds niet.

De 'send' is een type="hidden" en werkt goed moet ik zeggen, wat is de meerwaarden om jou optie te gebruiken?
 
Wouter J

Wouter J

15/05/2012 19:57:59
Quote Anchor link
Quote:
- Er zit een foutafhandeling in zie regel 10

2 kromme dingen:
1) eerst formulier variabelen gebruiken en dan pas kijken of er uberhaupt wel een formulier is verzonden? Lijkt me een vreemde gang van zaken.
2) Foutafhandeling op systeem dingen is ook handig. Is de query, ehh juist, wel juist verzonden? Krijg ik errors (zet dus de error_reporting aan)? Enz?

Quote:
- Wat kan hier fout aan zijn? de velden zijn juist benaamt.
- Ik heb alles goed doorgelezen en 3x op spelfouten gecontroleerd. Ook geeft Dreamweaver geen syntax errors aan.

Dan mis je toch nog echt heel veel PHP kennis om zo'n script te maken. Want deze fout moet je na 1 keer goed doorlezen al meteen hebben gezien.

Quote:
- Sorry ik heb een breed scherm met hoge resolutie, past precies op 1 regel bij mij :D

Het gaat er niet om dat het op 1 regel past of niet maar om de net heid. Wat vind je netter, jou code of deze hieronder?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
$page
= intval($_GET['id']);
$zichtbaar = (isset($_POST['zichtbaar'])
                 ?
1
                 : 0
             );

$update = "
UPDATE
  tabel
SET
  a_id = "
.$page."
WHERE
  p_id = '"
.mysql_real_escape_string($_POST['pagina'])."'
  AND
    titel = '"
.mysql_real_escape_string($_POST['titel'])."'
  AND
    summary = '"
.mysql_real_escape_string($_POST['summary'])."'
  AND
    content = '"
.mysql_real_escape_string($_POST['content'])."'
  AND
    zichtbaar = '"
.$zichtbaar."'
"
;
$numrow = mysql_num_rows($update);

if (isset($_POST['send'])) {
    if ($numrow == 0) {
        echo "Sorry er is iets fout gegaan tijdens het bewerken";
    }
}

?>


Quote:
De 'send' is een type="hidden" en werkt goed moet ik zeggen, wat is de meerwaarden om jou optie te gebruiken?

Dat die methode altijd goed werkt en jou methode niet overal.

Quote:
ik krijg een errors, ik heb er nu achter regel 10 mysql_error() gezet echter geeft die geen melding

>> Ik krijg een errors
Je krijgt inderdaad 1 error iets van:
mysql_num_rows() expects parameter 1 to be a query resource, string given
>> (...) achter regel 10 (...)
Wat heeft die daar ook te zoeken?
Gewijzigd op 15/05/2012 20:02:59 door Wouter J
 
- SanThe -

- SanThe -

15/05/2012 19:58:34
Quote Anchor link
- Mark - op 15/05/2012 19:51:58:
De query wordt nergens uitgevoerd dus er zal inderdaad niet veel gebeuren.


Inderdaad.

Hier is $update gewoon een tekst:
$numrow = mysql_num_rows ($update);
 
Chris PHP

Chris PHP

15/05/2012 20:03:58
Quote Anchor link
@Wouter

even buiten die 'kromme' dingen om, voordat ik de hele foutafhandeling correct en zuiver maak, wil ik eerst een werkende update query hebben.

Als je het hebt over de $update = mysql_query ("statement hier") zonder de mysql_query ja klopt dat was ik even vergeten, is aangepast en werkt ook niet.

Ik persoonlijk vind mijn manier duidelijker, echter dit is aanwensel en persoonlijke voorkeur. Is niet echt belangrijk voor de werking van het script.

Toevoeging op 15/05/2012 20:04:43:

- SanThe - op 15/05/2012 19:58:34:
- Mark - op 15/05/2012 19:51:58:
De query wordt nergens uitgevoerd dus er zal inderdaad niet veel gebeuren.


Inderdaad.

Hier is $update gewoon een tekst:
$numrow = mysql_num_rows ($update);


Dat is inmiddels aangepast, maar ook dan werkt het niet.
 
Wouter J

Wouter J

15/05/2012 20:09:46
Quote Anchor link
Quote:
even buiten die 'kromme' dingen om, voordat ik de hele foutafhandeling correct en zuiver maak, wil ik eerst een werkende update query hebben.

Verkeerde werkwijze. Ga jij ook eerst een huis bouwen en dan pas aan de fundering beginnen? Nee, je begint eerst met de fundering en dan ga je bezig met het huis.
Zo werkt een script ook. Een script zal niemand in 1 keer vlekkeloos scripten, het is mijn in elk geval nog nooit gelukt. Alleen om je fouten te ontdekken moet je gaan debuggen zoals dat heet en daarvoor heb je foutmeldingen en goede foutafhandeling nodig. Dus zonder goede foutafhandeling en met kromme dingen zul je nooit de update query werkende krijgen.
Quote:
Ik persoonlijk vind mijn manier duidelijker, echter dit is aanwensel en persoonlijke voorkeur. Is niet echt belangrijk voor de werking van het script.

Het is niet persoonlijke voorkeur maar correctheid om snel te kunnen debuggen. In jou code kan je niet zien dat je 2 if statements hebt, in elk geval dat kost veel meer tijd. En die 2 }}, je zou niet weten waar die vandaan komen en wat er in deze statements gebeurd. Hierdoor ga je op den duur je eigen code niet meer begrijpen.
 
Obelix Idefix

Obelix Idefix

15/05/2012 20:09:55
Quote Anchor link
Chris NVT op 15/05/2012 20:03:58:
voordat ik de hele foutafhandeling correct en zuiver maak, wil ik eerst een werkende update query hebben.


En als je het nou eens om zou draaien: zou het door (correcte) foutafhandeling niet zo zijn dat je de fout zou kunnen vinden en daarmee je query werkend krijgt.....
 
Chris PHP

Chris PHP

15/05/2012 20:13:29
Quote Anchor link
mysql_error() geeft geen melding, hoe kom ik er dan achter waar het fout gaat? Zelfs met een or die (mysql_error()) achter de query krijg ik geen melding van MySQL.
 
- Ariën  -
Beheerder

- Ariën -

15/05/2012 20:15:43
Quote Anchor link
Chris NVT op 15/05/2012 20:13:29:
mysql_error() geeft geen melding, hoe kom ik er dan achter waar het fout gaat? Zelfs met een or die (mysql_error()) achter de query krijg ik geen melding van MySQL.

Hoe implem,enteer je het dan? Je plaatst mysql_error(), niet echter je query, maar kijkt wat mysql_query() teruggeeft. Indien 'false', dan toon je mysql_error().
 
Chris PHP

Chris PHP

15/05/2012 20:16:06
Quote Anchor link
error_reporting(E_ALL); is toegevoegd in het config script ook hier krijg ik geen verdere foutmeldingen.

Toevoeging op 15/05/2012 20:19:16:

@Aar,

Ongeacht waar ik mysql_error() plaats, deze geeft niets. Ik heb hem nu direct achter de $update query staan, zo dus $update = mysql_query ("statement") or die (mysql_error());

Maar ik krijg geen meldingen.
Gewijzigd op 15/05/2012 20:19:50 door Chris PHP
 
Wouter J

Wouter J

15/05/2012 20:26:21
Quote Anchor link
Hmmm, lezen is ook een kunst blijkbaar.

- Aar -:
Je plaatst mysql_error(), niet achter je query, maar kijkt wat mysql_query() teruggeeft. Indien 'false', dan toon je mysql_error().
 
Chris PHP

Chris PHP

15/05/2012 20:31:50
Quote Anchor link
@Wouter,

Sarcasme mag je wel voor je houden hoor.

Ik heb zoals 3x gezegd de wijzigingen m.b.t. error reporting aangepast blijkbaar zijn er meer mensen die moeite hebben met lezen.

Kan er iemand gewoon ee straight-to-the-point antwoord geven AUB?

P.S. als ik doodleuk wat , neezet komt mysql_error() wel met een melding dat mijn syntax niet correct is.
Gewijzigd op 15/05/2012 20:36:38 door Chris PHP
 
Wouter J

Wouter J

15/05/2012 20:34:45
Quote Anchor link
Quote:
Sarcasme mag je wel voor je houden hoor.

Helaas was dit geen sarcasme.. Aar zegt 'niet achter je query' vervolgens reageer jij 'Ik heb hem nu direct achter de $update query staan' dan lijkt het me dat er ergens iets mis gaat.

Straight-to-the-point answer: http://github.com/WouterJ/SQL-boilerplate/tree/mysql
 
Chris PHP

Chris PHP

15/05/2012 20:38:31
Quote Anchor link
@wouter,

Ik had het op dat moment op 3 verschillende plaatsen gezet omdat ik niet kon begrijpen dat er geen mysql_error() melding kreeg. Dus idd ook achter de query evenals een losse foutafhandeling.

Echter als ik doodleuk wat , neerzet in de statement komt mysql_error() wel met een melding dat de syntax niet klopt.

Leuk linkje echter staat nergens een update statement, geen straight-to-the-point antwoord dus.
Gewijzigd op 15/05/2012 20:41:01 door Chris PHP
 
- Ariën  -
Beheerder

- Ariën -

15/05/2012 20:50:57
Quote Anchor link
Dan maar even wat pseudocode, om wat meer duidelijkheid te geven.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$sql
="SELECT dit, dat FROM iets";
$result = mysql_query($sql);
if($result) {
 // query is gelukt, toon een leuke bevestigingsmelding
} else {
 // Jammer, de query is niet uitgevoerd, echo hier een mysql_error().
}
?>
Gewijzigd op 15/05/2012 20:52:00 door - Ariën -
 
Chris PHP

Chris PHP

15/05/2012 20:54:12
Quote Anchor link
@Aar,

Waarom is deze foutafhandeling niet correct dan? Hij geeft een error in de syntax.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if ($update == FALSE) { echo mysql_error(); }
?>
 

Pagina: 1 2 3 4 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.