Avatar billede dennisml Nybegynder
20. maj 2011 - 15:49 Der er 8 kommentarer og
1 løsning

Database UPDATE

Hej alle.

Jeg har lavet et "simpelt" script til at update sql database. men det virker ikke helt.
Jeg er HELT ny i php så skære det gerne ud i pap til mig :D

Den opdatere kun nogen af dem,  og det er forskelligt hvilken det er. jeg har id 1,2 og 3 i min database.
nogen gange updatere den 1 andre gange ikke, nogen gange 2, og andre gange ikke. :S nogen logisk forklaring?

her er scriptet:


<?php

$conn = mysql_connect("host", "user", "pass");
    mysql_select_db("MY_DB");
   
if(isset($_POST['submit'])){
       
       
    $en_lang =$_POST['en_lang'];           
    $dk_lang =$_POST["dk_lang"];
    $name =$_POST["name"];
    $id =$_POST["id"];
   
    $sql = mysql_query("UPDATE Language SET en_lang='$en_lang', dk_lang='$dk_lang', name='$name' WHERE id='$id'");
    mysql_query($sql);

    }
$sql = "SELECT * FROM Language ORDER BY id ASC";

$result = mysql_query($sql);
if (mysql_num_rows($result) == 0) {
    echo "No rows found, nothing to print so am exiting";
    exit;
}
?>
    <form name="form1" method="post" action="">
      <label for="textfield"></label>
<table width="600" border="0" cellspacing="0" cellpadding="0">
  <?php
while ($row = mysql_fetch_assoc($result)) {
      echo"<tr>";
      echo"<td><input type=\"text\" name=\"en_lang\" value=\"".$row['en_lang']."\"></td>";
      echo"<td><td><input type=\"text\" name=\"dk_lang\" value=\"".$row['dk_lang']."\"></td>";
      echo"<td><td><input type=\"text\" name=\"name\" value=\"".$row['name']."\"></td>";
      echo"<td><td><input type=\"text\" name=\"id\" value=\"".$row['id']."\"></td>";
      echo"</tr>";
      }
?>

</table>
      <input name="submit" type="submit">

  </form>


På forhånd tak
Avatar billede dennisml Nybegynder
20. maj 2011 - 15:59 #1
har jeg ret hvis jeg mener det er noget med det her at gøre?

$en_lang =$_POST['en_lang'];           
    $dk_lang =$_POST["dk_lang"];
    $name =$_POST["name"];
    $id =$_POST["id"];
   
    $sql = mysql_query("UPDATE Language SET en_lang='$en_lang', dk_lang='$dk_lang', name='$name' WHERE id='$id'");
Avatar billede wanze Nybegynder
20. maj 2011 - 16:02 #2
Udskriv din MySQL-fejl, så du kan se, hvad problemet er: mysql_query($sql) or die(mysql_error());.

Derudover bør du læse op på SQL injections, din kode er meget udsat. Du kan aldrig stole på brugerdata. Du bør indkapsle de variabler, du sender til din database ($_POST['en_lang'], $_POST['dk_lang'], $_POST['name'] og $_POST['id']) i mysql_real_escape_string().
Avatar billede dennisml Nybegynder
20. maj 2011 - 16:21 #3
Tak for svaret. dette er kun til admin, som er en "lukket" del af siden. siden til og så login session osv. men jeg for denne fejl nu :
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1
Avatar billede wanze Nybegynder
20. maj 2011 - 16:31 #4
Der kan stadig opstå fejl, så det er en billig undskyldning for at udelade noget så simpelt som at indkapsle sine data.

Jeg kan ikke se noget 1-tal i den forespørgsel, du kører, så den må være i dataen. Udskriv samtidig $sql, så vi præcis, hvad du sender til databasen.
Avatar billede dennisml Nybegynder
20. maj 2011 - 16:35 #5
jeg for samme fejl.

det eneste jeg smider ind i af data i felterne er:
test
test1
test2
Avatar billede dennisml Nybegynder
20. maj 2011 - 16:56 #6
den updatrer godt nok, men den kommer stadig med den fejl ?
Avatar billede dennisml Nybegynder
20. maj 2011 - 17:45 #7
har fundet ud af det.
Avatar billede wanze Nybegynder
21. maj 2011 - 14:49 #8
Det vil være behjælpeligt for andre, hvis du fortæller, hvordan du løste dit problem.

Se evt. http://www.eksperten.dk/faq#faq-3-4 :)
Avatar billede repox Seniormester
25. maj 2011 - 10:09 #9
Udover FAQ'en siger det på en pæn måde er det også krævet af de brugerbetingelser, som OP accepterede da han oprettede sin bruger, punk 2.10 at man deler sin løsning.
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