[php/mysql]Raar probleem met inserts

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • gitaarwerk
  • Registratie: Augustus 2001
  • Niet online

gitaarwerk

Plays piano,…

Topicstarter
Jep, daarnet een topicje geplaatst..ik hoop dat deze wat minder sullig is :)

Ik heb een simpel formuliertje gemaakt in php, kan de klant lekker wat tekst aanpassen als hij dat wilt, niets bjzonders, en moet zo blijven.

Nu stuur ik dit formuliertje door (eerst had ik het naar zichzelf laten sturen, maar omdat het probleem voorkwam heb ik uit voorzorg maar naar een 2e pagina door laten sturen)

ok..

ik krijg een hele normale uitput als ik het formulier in vul en de SQL code uitpars

output
PHP:
1
INSERT INTO news SET News_Date=NOW(), News_Header='testaaa', News_Message='bbbtest'


niets bijzonders..

nu zet ik het in mysql met die code, en dan gebeurt er het volgende:

slaat een nieuwe rij op: goede datum - goede kop - goed bericht;
slaat nog een rij op (:?): goede datum - geen kop - geen bericht;

waar kan dit aan liggen?
(er zijn geen loops, geen dubbele variabelen,.. )

[ Voor 9% gewijzigd door gitaarwerk op 07-03-2006 15:33 ]

Ontwikkelaar van NPM library Gleamy


Acties:
  • 0 Henk 'm!

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

Janoz

Moderator Devschuur®

!litemod

Dat ligt waarschijnlijk aan het feit dat de kop en het bericht op dat moment geen waarde hebben, maar zonder een stukje relevante code valt daar weinig over te zeggen.

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!

  • kingmuze
  • Registratie: Februari 2003
  • Laatst online: 24-10-2024

kingmuze

so don't fear

Dit klinkt heel onduidelijk. Zou je misschien de code kunnen posten?

[gvr]muze[nl] says: fear is the mind killer


Acties:
  • 0 Henk 'm!

  • gitaarwerk
  • Registratie: Augustus 2001
  • Niet online

gitaarwerk

Plays piano,…

Topicstarter
sure

ok..ik heb even weer alles in commentaar gezet, en ik gebruik tijdelijk deze code (uiteraard start hij de functie door de query string)

PHP:
1
2
3
4
5
6
7
8
9
10
    if(isset($_GET['action']) && $_GET['action']=='updatenews')
    {
        // echo $News_Header = trim(addslashes($_POST['News_Header']));
        // echo $News_Message = trim(addslashes($_POST['FCKeditor1']));
        $News_Header = '1';
        $News_Message = '2';
        
        mysql_query("INSERT INTO news SET News_Date=NOW(), News_Header='$News_Header', News_Message='$News_Message'");
        echo $REPORT->OK('Het nieuws is bijgewerkt.');
    }


hier hij gaat bij over zijn nek
PHP:
1
echo $REPORT->OK('Het nieuws is bijgewerkt.');


de functie:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    function OK($message)
    {
        $return = '
        <table border="0" cellspacing="0" cellpadding="0" class="REPORT_OK">
          <tr>
            <td class="OK_Title">[img]"ok.gif"[/img]OK</td>
          </tr>
          <tr>
            <td class="OK_Content">'.$message.'</td>
          </tr>
         </table>';
         
         return $return; 
    }


niets bijzonders dus. Deze combinaties gebruik ik altijd en hebben nooit problemen opgeleverd, ik kan dan ook niet ontdekken wat hier dan mis gaat.

[ Voor 42% gewijzigd door gitaarwerk op 07-03-2006 15:46 ]

Ontwikkelaar van NPM library Gleamy


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Wordt de betreffende pagina niet geïnclude door een andere pagina? Of zit er misschien ergens een refresh waar je geen rekening mee houdt?

[ Voor 36% gewijzigd door NMe op 07-03-2006 15:49 ]

'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!

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

Wat bedoel je daarmee? En je ziet zelf neem ik aan wel dat je code nu open staat voor sql injection :) ?

DM!


Acties:
  • 0 Henk 'm!

  • kingmuze
  • Registratie: Februari 2003
  • Laatst online: 24-10-2024

kingmuze

so don&#039;t fear

Zet zoiezo even error reporting op full:
error_reporting(E_ALL);

Maar dit werkt ook niet:

echo "... NOW() ...";
dan wordt het:
echo "..." . NOW() . "...";

[gvr]muze[nl] says: fear is the mind killer


Acties:
  • 0 Henk 'm!

  • gitaarwerk
  • Registratie: Augustus 2001
  • Niet online

gitaarwerk

Plays piano,…

Topicstarter
-NMe-, nee, hij wordt gewoon doorgestuurd

@JHS, err SQL injection? :P
ik denk zelf dat je bedoelt dat iedereen via query string kan updaten? als dat zo is, ja, hij staat ff open omdat ik er mee aan het testen ben, heb alle code er omheen uitgegooid.

en dat "over zijn nek gaan" bedoel ik mee dat als ik daar mijn commentaar voor weg haal (//) dat hij dan die dubbele 'gekke' insert maakt.

@kingmeuze, zelfs zonder dat doet ie het zelfde. De rest van mn code zorg ik dan zelf nog wel voor, Had errorreporting ff uitgezet, zal eens kijken..

(edit, errorreporting geeft geen foutjes of warnings verder)

[ Voor 27% gewijzigd door gitaarwerk op 07-03-2006 15:58 ]

Ontwikkelaar van NPM library Gleamy


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Hmm, als er verder geen loopstructuren, gekke includes of refreshes in zitten dan weet ik het ook niet. :o
kingmuze schreef op dinsdag 07 maart 2006 @ 15:54:
Zet zoiezo even error reporting op full:
error_reporting(E_ALL);

Maar dit werkt ook niet:

echo "... NOW() ...";
dan wordt het:
echo "..." . NOW() . "...";
Dat hangt er maar net vanaf of je de MySQL-functie NOW() wil gebruiken, of een PHP-functie die toevallig ook zo heet. ;)

'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!

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

Gitaarwerk schreef op dinsdag 07 maart 2006 @ 15:56:
en dat "over zijn nek gaan" bedoel ik mee dat als ik daar mijn commentaar voor weg haal (//) dat hij dan die dubbele 'gekke' insert maakt.
Dan lijkt het me dat de aanroep van $REPORT->ok(...); je query functie weer wordt aangeroepen, maar nu met niks erin. Het lijkt me dat het dus ook in die code zit, of iniedergeval in de chain of events die daardoor wordt veroorzaakt :) .

DM!


Acties:
  • 0 Henk 'm!

  • gitaarwerk
  • Registratie: Augustus 2001
  • Niet online

gitaarwerk

Plays piano,…

Topicstarter
de sql functie, that is :)

maja.. dat is het dus.. :o ik kom er ook niet echt uit =)

niets gerefreshed,
niets geinclude (behalve dat bestand met functies)
niets geloopt of genesteld

@JHS,
idd, dat is het ook, maar het is heel vreemd omdat dit spul altijd normaal werkt, en nu ineens niet, en zoals je ziet is dat object nou ook niet echt zo ingewikkeld :)

dan maar een standaard tekst print ervan :P

[ Voor 38% gewijzigd door gitaarwerk op 07-03-2006 16:07 ]

Ontwikkelaar van NPM library Gleamy


Acties:
  • 0 Henk 'm!

  • kingmuze
  • Registratie: Februari 2003
  • Laatst online: 24-10-2024

kingmuze

so don&#039;t fear

Oke, we hebben nu de code, wat is nou de exacte fout?

[gvr]muze[nl] says: fear is the mind killer


Acties:
  • 0 Henk 'm!

  • gitaarwerk
  • Registratie: Augustus 2001
  • Niet online

gitaarwerk

Plays piano,…

Topicstarter
kingmuze schreef op dinsdag 07 maart 2006 @ 16:06:
Oke, we hebben nu de code, wat is nou de exacte fout?
Dat mijn functie (wat alleen een tabelletje bevat met css en waarbij een berichtje wordt meegegeven)
die mysql query nog een keer aanroept.

Ontwikkelaar van NPM library Gleamy


Acties:
  • 0 Henk 'm!

  • kingmuze
  • Registratie: Februari 2003
  • Laatst online: 24-10-2024

kingmuze

so don&#039;t fear

Lijkt me bijna impossible... wordt dat bestand niet twee keer geinclude? gebruik anders overal include_once/require_once.

[gvr]muze[nl] says: fear is the mind killer


Acties:
  • 0 Henk 'm!

  • George
  • Registratie: Maart 2006
  • Laatst online: 02-03 19:22
Even SQL code door je app laten echo'en daarna de string door phpmyadmin oid in een sql window laten draaien. Kijken wat je voor foutmelding krijgt.

en je roept "OK" aan als method van een class ? Misschien ergens een extra regel code in de class definitie staan buiten function braces ?

-GIsmaël

[ Voor 32% gewijzigd door George op 07-03-2006 16:19 ]

-George.


Acties:
  • 0 Henk 'm!

  • NoFearWizz
  • Registratie: Oktober 2002
  • Laatst online: 18-09 16:59
zou je niet:

PHP:
1
        mysql_query("INSERT INTO news (News_Date,News_Header,News_Message) VALUE(NOW(),'".$News_Header."','".$News_Message."' ");


ipv SET want SET is voor de update component

[ Voor 71% gewijzigd door NoFearWizz op 07-03-2006 16:19 ]


Acties:
  • 0 Henk 'm!

  • gitaarwerk
  • Registratie: Augustus 2001
  • Niet online

gitaarwerk

Plays piano,…

Topicstarter
kingmuze schreef op dinsdag 07 maart 2006 @ 16:15:
Lijkt me bijna impossible... wordt dat bestand niet twee keer geinclude? gebruik anders overal include_once/require_once.
zelfde verhaal :) ik ga het maar opgeven en werken met een simpel echootje :)
GIsmael schreef op dinsdag 07 maart 2006 @ 16:16:
Even SQL code door je app laten echo'en daarna de string door phpmyadmin oid in een sql window laten draaien. Kijken wat je voor foutmelding krijgt.

-GIsmaël
thanks voor de tip, maar zoals je kunt zien had ik het geprobeerd :) nog even dubbel gecheked voor en na,.. niets te zien.

misschien moet de hostingmaatschappij eens even kijken of er geen kevertje tussen hun software loopt :+

edit: nope, is het ook niet :)
NoFearWizz schreef op dinsdag 07 maart 2006 @ 16:19:
[...]


zou je niet:

PHP:
1
        mysql_query("INSERT INTO news (News_Date,News_Header,News_Message) VALUE(NOW(),'".$News_Header."','".$News_Message."' ");


ipv SET want SET is voor de update component
dat was de eerste code die ik had, zelfde effect. hij staat nu weer op zijn oude code en een normale echo werkt.

denk gewoon dat de software beetje bugt.

sluit dit topic maar =),

[ Voor 30% gewijzigd door gitaarwerk op 07-03-2006 16:22 ]

Ontwikkelaar van NPM library Gleamy


Acties:
  • 0 Henk 'm!

  • George
  • Registratie: Maart 2006
  • Laatst online: 02-03 19:22
Nou als ie dus de SQL 2 keer uitvoert, even een "echo 'wtf';"; plakken voor de mysql_query en kijken of ie de text dubbel echo'ed. Zo ja dan weet je iig of de functie al dan niet 2 keer wordt aangeroepen.

-GIsmaël

[ Voor 9% gewijzigd door George op 07-03-2006 16:23 ]

-George.


Acties:
  • 0 Henk 'm!

  • NoFearWizz
  • Registratie: Oktober 2002
  • Laatst online: 18-09 16:59
ik zie nu dat het om UPdate nieuws gaat waarom gebruik dan niet

PHP:
1
mysql_query("UPDATE news SET News_Date=NOW(), News_Header='$News_Header', News_Message='$News_Message'");


ipv Insert

Acties:
  • 0 Henk 'm!

  • gitaarwerk
  • Registratie: Augustus 2001
  • Niet online

gitaarwerk

Plays piano,…

Topicstarter
omdat de update leeg bleef :)

@Door: GIsmael ,

1x maar O_O

Ontwikkelaar van NPM library Gleamy


Acties:
  • 0 Henk 'm!

  • NoFearWizz
  • Registratie: Oktober 2002
  • Laatst online: 18-09 16:59
Gitaarwerk schreef op dinsdag 07 maart 2006 @ 16:26:
omdat de update leeg bleef :)

@Door: GIsmael ,

1x maar O_O
Je haalt hier 2 soorten query's door elkaar de
PHP:
1
mysql_query("UPDATE [table] SET [field] = [value] SET [field2] = [value2];");

en
PHP:
1
mysql_query("INSERT INTO [table] ([field],[field2]) VALUES([value],[value2]);");


je moet ze niet door elkaar gebruiken zoiezo.
erg raar dat hij update niet uitvoert. (bij UPDATE moet je natuurlijk wel een WHERE meegeven van welke RECORD die moet aanpassen anders past ie alles ineenkeer aan naar die waardes)

Welke SQL gebruik je (mysql, mssql, andere?)

[ Voor 8% gewijzigd door NoFearWizz op 07-03-2006 16:31 ]


Acties:
  • 0 Henk 'm!

  • George
  • Registratie: Maart 2006
  • Laatst online: 02-03 19:22
NoFearWizz schreef op dinsdag 07 maart 2006 @ 16:19:

ipv SET want SET is voor de update component
Even tussen neus en lippen door: Je mag SET ook gebruiken bij een INSERT statement. Is gewoon valid. Ik gebruik zelf altijd SET omdat je zo je code overzichtelijker maakt.

-George.


Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Eens met GIsmael. INSERT VALUES is handig wanneer je meerdere rijen tegelijk wil invoegen. Voor 1 rij kan je evengoed SET gebruiken.

[ Voor 19% gewijzigd door XWB op 07-03-2006 17:48 ]

March of the Eagles


Acties:
  • 0 Henk 'm!

  • George
  • Registratie: Maart 2006
  • Laatst online: 02-03 19:22
Hacku schreef op dinsdag 07 maart 2006 @ 17:48:
Eens met GIsmael. INSERT VALUES is handig wanneer je meerdere rijen tegelijk wil invoegen. Voor 1 rij kan je evengoed SET gebruiken.
Bij het invoegen van meerdere rijen in php5 + mysqli extension zou ik statements gebruiken. Minder load en sneller.
Dus dan heb ik het over mysqli_stmt icm bind_param().

-George.

Pagina: 1