[PHP 5.1.1] mysql_query geeft geen returnwaarde?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • coenbijlsma
  • Registratie: Augustus 2004
  • Niet online
Ik heb een functie geschreven die als returnwaarde het resultaat van een mysql_query heeft:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function add_product($product_shortname, $company_email, $product_description, $product_price, $product_valid_from
                    , $product_valid_to , $product_image_relpath){
    require("mysql_connect.php");
    
    $add_product_qry = "INSERT INTO site_products
                    (product_shortname
                    , company_email
                    , product_description
                    , product_price
                    , product_valid_from
                    , product_valid_to
                    , product_image_relpath)
                    VALUES('".$product_shortname."'
                    ,'".$company_email."'
                    ,'".$product_description."'
                    ,".$product_price."
                    ,'".$product_valid_from."'
                    ,'".$product_valid_to."'
                    ,'".$product_image_relpath."');";

    return mysql_query($add_product_qry,$conn);
}


Als ik regel 21 vervang door dit:
PHP:
1
2
3
4
5
if(mysql_query($add_product_qry)){
        return true;
}else{
        return mysql_error($conn);
}

krijg ik opeens geen returnvalue meer.

Iemand een idee waar dit door kan komen? Ik heb php.net al nagekeken op deze functie, maar dat leverde geen nuttige resultaten op, helaas..

[ Voor 0% gewijzigd door coenbijlsma op 28-11-2006 13:30 . Reden: @Janoz: is inderdaad alleen maar een typo ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Ik mis iig een haakje, maar dat kan ook een overtiep foutje zijn natuurlijk

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Laat die @ eens weg. :X @ onderdrukt foutmeldingen, moet je vooral doen als je aan het debuggen bent. ;)

Ook niet in live-systemen, daar niet van.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • coenbijlsma
  • Registratie: Augustus 2004
  • Niet online
@ -NMe-: heb ik net even getest, maar als ik de query dan uitvoer krijg ik true terug, terwijl ik een product toevoeg met dezelfde PK. Als ik btw de query uitvoer in de Query Browser van MySQL krijg ik wél een error.

Ik heb die @ ervoor gezet omdat ik het resultaat van de query niet direct op de pagina wil laten zien, maar op een andere plek in de site. Daarom test ik het ook zo ;)

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

coenbijlsma schreef op dinsdag 28 november 2006 @ 13:11:
@ -NMe-: heb ik net even getest, maar als ik de query dan uitvoer krijg ik true terug, terwijl ik een product toevoeg met dezelfde PK. Als ik btw de query uitvoer in de Query Browser van MySQL krijg ik wél een error.
Ja, omdat er een haakje mist, zoals Janoz al zegt. :P
Ik heb die @ ervoor gezet omdat ik het resultaat van de query niet direct op de pagina wil laten zien, maar op een andere plek in de site. Daarom test ik het ook zo ;)
Ik weet niet waar je dat vanaf haalt, maar mysql_query laat sowieso niets direct op de pagina zien. Die @ is voor het onderdrukken van foutmeldingen, niet voor het onderdrukken van uitvoer in het algemeen.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • coenbijlsma
  • Registratie: Augustus 2004
  • Niet online
Dat haakje is alleen een typo hier (en alweer verbeterd :)) Voor dat @: my bad, je hebt inderdaad gelijk; ik dacht dat het was om een error later weer te geven |:(

Ik pas voor de duidelijkheid mn TS even aan met het script zonder @'s

Ik zie trouwens al hoe het probleem veroorzaakt wordt, het komt door het stukje code dat deze functie aanroept (trouwens een mooie voor dit topic)

PHP:
1
2
3
4
5
6
if(!$add_product_success){
    echo("NIET GELUKT: ".mysql_error()."<br />");
    $errors = 1;
}else{
    echo("GELUKT<br />");
}


Als de functie dan óf true, óf de mysql_error() retourneert, is hij natuurlijk nooit false, en is het altijd 'gelukt'.

Zucht...

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Ik neem aan dat je er nu dus dit van maakt?
PHP:
1
2
3
4
5
6
if ($add_product_success !== true) {
    echo("NIET GELUKT: ".$add_product_success."<br />");
    $errors = 1;
} else {
    echo("GELUKT<br />");
}

Het is natuurlijk redelijk zinloos om mysql_error() nogmaals aan te roepen als je weet dat wanneer $add_product_success niet true is, het de waarde van mysql_error() al bevat. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • coenbijlsma
  • Registratie: Augustus 2004
  • Niet online
Inderdaad:

PHP:
1
2
3
4
5
if($add_product_success){
    echo("GELUKT<br />");
}else{
    echo("NIET GELUKT: ".$add_product_success."<br />");
}

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

inderdaad?? Ik denk dat je de clue van NMe's post compleet aan het missen bent. Let vooral op regel 1 ipv de rest.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Die is altijd gelukt. ;)

Testcase:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<pre>
<?php

function testThis($s) {
   if ($s) {
      echo("GELUKT");
   } else {
      echo ("NIET GELUKT");
   }
}

testThis(true);
testThis(1);
testThis("blaat");
testThis(0);
testThis("0");

?>
</pre>

Kijk maar eens wat dat doet. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • coenbijlsma
  • Registratie: Augustus 2004
  • Niet online
Ik heb inderdaad de plank redelijk misgeslagen, en heb het nu zo opgelost als -NMe- schreef.
Ik wist trouwens helemaal niet dat deze test mogelijk was: '!=='

Wat is precies het verschil met '!=' ?

Uitslag test:
GELUKTGELUKTGELUKGNIET GELUKTNIET GELUKT

Blijkbaar evalueert PHP alles ongelijk aan 0 of "0" naar true!

[ Voor 23% gewijzigd door coenbijlsma op 28-11-2006 14:07 . Reden: Uitslag test ]


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

coenbijlsma schreef op dinsdag 28 november 2006 @ 14:03:
Ik heb inderdaad de plank redelijk misgeslagen, en heb het nu zo opgelost als -NMe- schreef.
Ik wist trouwens helemaal niet dat deze test mogelijk was: '!=='

Wat is precies het verschil met '!=' ?
!== test ook op type ( typeOf() )

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Operators zitten er blijkbaar nog niet zo goed in bij je, gezien het feit dat je er meer dan één niet goed kende in dit topic. :P Misschien is deze pagina wat voor je. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • coenbijlsma
  • Registratie: Augustus 2004
  • Niet online
Die is nuttig! Ik ben ook niet zo'n php-mens, meer java. Ik ga me er eens in verdiepen!
Pagina: 1