Udate i mysql

Tags:    php mysql

Hej.

Nogen der kan se hvad der går gal her:

Jeg prøver at opdatere oplysningerne på en bruger i mit system:


Fold kodeboks ind/udPHP kode 




9 svar postet i denne tråd vises herunder
4 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
hvis du ligger din sql ud i en seperat variabel, og prøver at udskrive den, kan du se fejlen

Fold kodeboks ind/udKode 


læg mærke til echo $sql

i denne linje er der 2 fejl:
1 syntax fejl (hint tæl paranteser)
1 værdi der ikke bliver sat




Du har en parentes for meget.

last_name='$lastname', tlf='$tlf', email='$email' WHERE id='$id')") or die(mysqli_error($conn));

Den markerede parentes skal slettes. (:



skal vi ikke vælge den anden parantes :)
så sql ser sådan ud
Fold kodeboks ind/udKode 




Selfølgelig ;)

Var lige hurtig nok kan jeg se.. :)



Indlæg senest redigeret d. 13.03.2016 11:57 af Bruger #21150
Ved ikke lige om det er det.. Men du skriver

action="<? $_SERVER['PHP_SELF']?>"

Der mangler <?php..

Men ved ikke om den selv kan finde ud af det..?

Og er din "$conn" defineret i den header.php du inkluder.

Ellers har du ikke oprettet forbindelse nogen steder. :)



Indlæg senest redigeret d. 13.03.2016 09:36 af Bruger #21150
hvilke fejl får du ??
er du logget på som admin ??
er session started på siden (må ligge i header.php)
prøv at udskrive din session

er error_reporting slået til i php.ini ??
alternativt kan du lave en debugheader.php som du indsætter i toppen af dit document

debugheader.php
Fold kodeboks ind/udKode 


<?php
include_once ('debugheader.php')


// test udskrivning af session
echo "<pre>";
print_r($_SESSION);
echo "</pre>";


include 'header.php';

if ($_SESSION['user']['useres_types'] == 3) {


**********************
denne linje mangler da noget
<form name="redigerbruger" action="<? $_SERVER['PHP_SELF'] ?>" method="post">

skal da se sådan ud
<form name="redigerbruger" action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
som Jørn Guldberg påpeger


et godt begynder råd:
læg dit sql statement ud i en seperat variabel, så er der nemmere at se fejl i det (test udskriv det)

Fold kodeboks ind/udKode 





Indlæg senest redigeret d. 13.03.2016 10:08 af Bruger #16075
Jeg for ikke fejl der oppe. den slår først fejl nede ved :

if (isset($_POST['redigerbruger'])) {

$brugernavn = $_POST['username'];
$fornavn = $_POST['first_name'];
$efternavn = $_POST['last_name'];
$tlf = $_POST['tlf'];
$email = $_POST['email'];

mysqli_query($conn, "UPDATE users SET username='$brugernavn', first_name='$fornavn', last_name='$lastname', tlf='$tlf', email='$email' WHERE id='$id')") or die(mysqli_error($conn));

echo "Brugeren er rettet!";
echo "<br>";

}else{
echo "Noget gik galt";
}

Det er kun her den fejler, fjerner jeg rediger bruger køre det hele som det skal. -> det begyndte at gå galt da jeg ville integrere form'en i min php, og så har jeg aldrig prøvet at kørt en udate to mysql.

fejlen ligger her et sted. piller jeg formen ud af whilen og fjerner if rediger bruger er der ingen problemer :)


alt hvad jeg for af fejl denne gang.

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 ')' at line 1

Har ikke haft problemer med mysql fejl meddelsere før.




Indlæg senest redigeret d. 13.03.2016 11:22 af Bruger #21349
Mange mange tak :D. Hvor er det dog nogen kedelige fejl jeg laver haha :D




Hvor er det dog nogen kedelige fejl jeg laver haha

en del af det er jo også at fejl finde på sine fejl, og finde de metoder der passer en bedst
hvis bare du lærer af dine fejl, så er det ikke spildte fejl

**************************

som du kan se er der flere måder at lave sin sql på

som du anvender
Fold kodeboks ind/udKode 


med en seperat variabel, nemmere at fejl finde på, da man nemt kan test udskrive den
Fold kodeboks ind/udKode 

sidst nævnte vil ikke give mening hvis man anvender Prepare Statement, som er noget af det nye i mysqli, og klar forbedret i det API der hedder PDO (et nyere API)
når du er mere rutineret i sql kan du læse denne lyn guide http://www.eksperten.dk/guide/1480 til Prepare Statement i mysqli

**************************

lidt suplerende, i mysqli kan man skrive i 2 style, eller blande som man har lyst:

  1. procedural style (som du anvender), er den gamle måde at skriv på, og er et lævn fra det gamle mysql API, og kun taget med over i mysqli for at gører det nemt for brugerne at skifte.

  2. object orinterede (OOP) style, dette er den mere moderne måde at skrive på, og er det eneste der kan anvendes i det API der hedder PDO



så dette
Fold kodeboks ind/udKode 



kunne også se sådan ud
Fold kodeboks ind/udKode 







t