Avatar billede sjh Nybegynder
11. marts 2005 - 23:05 Der er 8 kommentarer og
3 løsninger

mysql_query giver ikke fejl ved UPDATE

Hvorfor kommer der ikke fejl når jeg fyer den her af, det skal lige siges at min database er tom for data.

  $user_id = 1;
  $win_name = "test";
  $win_value = "top:10px;left:10px;";
  $sqlReturn = mysql_query("UPDATE windows_save SET user_id = '$user_id', win_name = '$win_name', win_value = '$win_value' WHERE user_id = '$user_id' AND win_name = '$win_name';");
  echo $sqlReturn; //-- 1
Avatar billede sthen Nybegynder
12. marts 2005 - 02:14 #1
Du beder den jo ikke om at komme med fejlmeddelelser, at der så ikke bør ske noget når din db er tom er jo så en helt anden snak.

Hvis du nu i stedet skriver:
  $sqlReturn = mysql_query("UPDATE windows_save SET user_id = '$user_id', win_name = '$win_name', win_value = '$win_value' WHERE user_id = '$user_id' AND win_name = '$win_name'") || die(mysql_error());

Hvad sker der så?
Avatar billede sjh Nybegynder
12. marts 2005 - 02:21 #2
ja, men der sker altså ikke noget..

echo $sqlReturn; <-- den viser bare et et-tal (1)

og den gemmer ikke noget. (skulle den jo heller ikke gerne) da min database er tom for data.
Avatar billede sthen Nybegynder
12. marts 2005 - 02:30 #3
Jamen jeg forstår ikke helt hvad du forventer at den skal skrive, da der jo ingen fejl er !
Avatar billede sjh Nybegynder
12. marts 2005 - 02:36 #4
Jo fejlen er at den ikke gemmer noget, det er det jeg gerne vil have den til..

Jeg har godt nok løst det på anden måde.. men ville gerne ha den til at fortælle om der er fejl..

Løsning..
<?php
  require_once("inc.sql.php");

  $user_id = $_POST["user_id"];
  $win_name = $_POST["win_name"];
  $win_value = $_POST["win_value"];

  if ($user_id && $win_name && $win_value) {
    $sqlResult = mysql_query("SELECT user_id, win_name FROM ".TABLE_WIN_SAVE." WHERE user_id = '$user_id' AND win_name = '$win_name';");
    if (mysql_num_rows($sqlResult) > 0) {
      mysql_query("UPDATE ".TABLE_WIN_SAVE." SET user_id = '$user_id', win_name = '$win_name', win_value = '$win_value' WHERE user_id = '$user_id' AND win_name = '$win_name';");
      } else {
      mysql_query("INSERT INTO ".TABLE_WIN_SAVE." (user_id, win_name, win_value) VALUES ('$user_id','$win_name','$win_value')");
    }
  }
  mysql_close($sqlConn);
?>

Men hvis jeg kunne få en fejl på den så behøver jeg ikke bruge.. SELECT .. FROM... for at tjekke om der er oprettet noget..
Avatar billede sthen Nybegynder
12. marts 2005 - 02:39 #5
Jamen for mig at se er det da den eneste måde du kan løse det på.
Avatar billede sjh Nybegynder
12. marts 2005 - 02:46 #6
Prøv nu at se her:

<?php
  if ($user_id && $win_name && $win_value) {
    $sqlResult = mysql_query("UPDATE ".TABLE_WIN_SAVE." SET user_id = '$user_id', win_name = '$win_name', win_value = '$win_value' WHERE user_id = '$user_id' AND win_name = '$win_name';");
    //-- Hvis jeg bare kunne få afvide i >$sqlResult< at det IKKE blev gemt
    //-- så viste jeg jo at jeg skulle køre >mysql_query("INSERT INTO ...< her fra:
    if (!$sqlResult) {
      mysql_query("INSERT INTO ".TABLE_WIN_SAVE." (user_id, win_name, win_value) VALUES ('$user_id','$win_name','$win_value')");
    }
  }
?>
Avatar billede erikjacobsen Ekspert
12. marts 2005 - 10:02 #7
Du kan bruge http://php.net/mysql_affected_rows efter din UPDATE.
Avatar billede sjh Nybegynder
12. marts 2005 - 13:26 #8
Ja se nu er den jo som jeg ville have den :D

<?php
  require_once("inc.sql.php");

  $user_id = $_POST["user_id"];
  $win_name = $_POST["win_name"];
  $win_value = $_POST["win_value"];

  if ($user_id && $win_name && $win_value) {
    mysql_query("UPDATE ".TABLE_WIN_SAVE." SET user_id = '$user_id', win_name = '$win_name', win_value = '$win_value' WHERE user_id = '$user_id' AND win_name = '$win_name';");
    if (mysql_affected_rows() == 0) {
      mysql_query("INSERT INTO ".TABLE_WIN_SAVE." (user_id, win_name, win_value) VALUES ('$user_id','$win_name','$win_value')");
    }
  }

  mysql_close($sqlConn);
?>

erikjacobsen > Kan du ikke lige smide et svar..
Avatar billede sjh Nybegynder
12. marts 2005 - 21:38 #9
erikjacobsen > Kan du ikke lige smide et svar..
Avatar billede erikjacobsen Ekspert
12. marts 2005 - 21:40 #10
Nej tak, jeg samler slet ikke på point.
Avatar billede sjh Nybegynder
12. marts 2005 - 21:46 #11
:D okææ så får sthen dem..
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