Avatar billede morten_21 Nybegynder
16. september 2008 - 11:42 Der er 6 kommentarer og
1 løsning

INSERT i database fejler uden fejlkode

Det her driver snart mig til vanvid - har følgende kode der skal oprette en linje i tabellen "menu":

<?php

$desc=$_POST['desc'];

if ($desc == !0) {

include ("dbcnxinc.php");
 
  $sqlquery = "INSERT INTO menu (desc,deleted)
  VALUES('$desc','0')" or die(mysql_error());

  echo ("OK");
    }
   
?>


Opret menupunkt:<br />
<form action="<?$PHP_SELF?>" method="post">
Menupunktets navn:

<input name="desc" style="width: 110px;">
<INPUT TYPE=submit NAME=submitit VALUE="Gem">
</form>

Variablen $desc kommer med, så det er ikke dét der går galt. Men der bliver ikke skrevet noget som helst i databasen. Hvad har jeg overset? :-(
Avatar billede pidgeot Nybegynder
16. september 2008 - 11:44 #1
if ($desc == !0)

...den tror jeg ikke helt kommer til at fungere som du regner med.

Mon ikke du mente:

if ($desc != 0)
Avatar billede morten_21 Nybegynder
16. september 2008 - 11:44 #2
dbcnxinc.php indeholder
<?php
    $dbcnx = @mysql_connect("xxx", "bruger", "pass");
    $select = @mysql_select_db("database") or die(mysql_error());
?>
Avatar billede morten_21 Nybegynder
16. september 2008 - 11:48 #3
Der er godt nok hurtige svar :-)

pidgeot> Det jeg mener er hvis $desc er lig med alt andet end nul, skal den indsætte det i db'en. Det lader til at virke fint?
Avatar billede pidgeot Nybegynder
16. september 2008 - 11:54 #4
...og det skriver man if ($desc != 0) (evt. !== hvis typen også skal stemme overens). Jeg har aldrig set din måde at skrive det på før, og kan ikke tro det vil virke, da ==! ikke er en operator i PHP - det bliver da vist læst som:
(desc == (!0))
altså, om desc er == den binære komplementærværdi af 0:
(desc == 0xFFFFFFFF) //for et 32-bit system
Avatar billede morten_21 Nybegynder
16. september 2008 - 12:50 #5
Okay, jeg fandt det bare i noget gammel kode jeg har brugt, og det lader også til at fungere. Nu har jeg brugt if(isset($_POST['desc'])) istedet, så er vi ude over det :)

Der bliver stadig ikke skrevet noget i databasen - nogen forslag?
Avatar billede pidgeot Nybegynder
16. september 2008 - 13:23 #6
Ah - nu kan jeg se hvad der er galt. Når du ser det tænker du nok også "Ja, selvfølgelig" :)

Tag et kig på denne linje:

  $sqlquery = "INSERT INTO menu (desc,deleted) VALUES('$desc','0')" or die(mysql_error());

...det er helt fint at du smider SQL'en ind i en variabel, men du kalder jo aldrig mysql_query så den bliver kørt :)

  $sqlquery = "INSERT INTO menu (desc,deleted) VALUES('$desc','0')";
  $res = mysql_query($sqlquery) or die(mysql_error());
Avatar billede morten_21 Nybegynder
16. september 2008 - 18:55 #7
Aaaaaah! det er resultatet af for lidt søvn :) Priceless! Tak for klarsynet ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester