Gå til innhold
🎄🎅❄️God Jul og Godt Nyttår fra alle oss i Diskusjon.no ×

Query fungerere i phpmyadmin, ikke i mysql_query()


Anbefalte innlegg

Hei,

 

Har et lite problem med en mysql-editor jeg lager. Jeg sender queries til php med javascript. Dette ser ut til å fungere fint, men mysql_query() gir allikevel problemer. Har samtidig satt skriptet til å printe ut hvert query som blir sendt og det rare er at hvis jeg kopierer det og limer inn i PHPMyAdmin, så funker det fint. =/

 

DELETE FROM `Payments` WHERE `Username` = "Fatboy" AND `Time` = "1201098889" AND `Comment` = "Ingen kommentar." AND `Amount` = "150"

mysql_error() gir meg følgende feilmelding.

 

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 '\"Fatboy\" AND `Time` = \"1201098889\" AND `Comment` = \"Ingen kommentar.\" AND ' at line 1

Noen som ser noen åpenbare feil?

 

- Jonas

Lenke til kommentar
Videoannonse
Annonse

Er det nødvendig å skrive databasenavnet Payments med fnutter?

Samme med Usernam, Time, Comment og ammount.

 

I tillegg trodde jeg ikke det var nødvndig med "" rundt tall. Prøv å droppe "" rundt tallene.

 

Er ikke sikker på at det er "feil", men tror ihvertfall ikke det er nødvendig.

 

 

En annen ting som kan være greit er at det siste du gjør før du kjører sql-setningen er å printe den. Da få man se akkurat hvordan det som blir kjørt ser ut.

Endret av Ekko
Lenke til kommentar

Har byttet til enkle fnutter og fjernet dem rundt tall, men allikevel funker det ikke. :dontgetit:

 

DELETE FROM `Payments` WHERE `Username` = 'Serenity' AND `Time` = 1201350611 AND `Comment` = 'Ingen kommentar.' AND `Amount` = 150

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 '\'Serenity\' AND `Time` = 1201350611 AND `Comment` = \'Ingen kommentar.

Syntax-messig kan jeg ikke tenke noe mer jeg kan endre på, og det funker jo som sagt om jeg limer spørringen inn i PHPMyAdmin. Gjør jeg noe feil i kjøring av spørringen? Klarer å kjøre enklere spørringer, slik som select * from `Payments`.

 

<?php

require_once ( 'config.php' );

mysql_connect ( $mysqladresse, $mysqlusername, $mysqlpassword );
mysql_select_db ( $_GET['database'] );

if ( get_magic_quotes_gpc () )
	$query = stripslashes ( $_GET['query'] );
else
	$query = $_GET['query'];

if ( mysql_query ( $_GET['query'] ) ) {

	echo '<p>Following query was successfully executed!</p>';
	echo '<p class="mysqlquery bold">' . $query . '</p>';

} else {

	echo '<p>Following query was <span class="bold">NOT</span> successfully executed. An error occurred!</p>';
	echo '<p>The editor is <span class="bold">NOT</span> synchronized with the actuall database, you should stop editing immediately and reload the page.</p>';
	echo '<p class="mysqlquery bold">' . $query . '</p>';
	echo '<p class="mysqlquery bold">' . mysql_error () . '</p>';

}

mysql_close ();

?>

Endret av Jonas
Lenke til kommentar

Fjern fnuttene rundt tabell- og kolonnenavnene dine også, og prøv da.

 

Edit: er det lurt å ta i mot databasespørringer med GET? Hva hvis jeg skriver

?query=DELETE FROM users

(gitt at du har en tabell som heter users. Det er bare å prøve seg frem med tabellnavn til alt er tomt.)

Endret av G2Petter
Lenke til kommentar

Takk, skal prøve det!

 

Og nei, kjøre spørringer direkte fra GET er naturligvis ikke spesielt fint, men for øyeblikket har kun jeg tilgang og har derfor bare ikke tatt meg bryet til å legge til mysql_escape_string(). Kommer vel etterhvert.

Lenke til kommentar

mysql_real_escape_string() vil vel ikke hjelpe deg når GET-parameteret er ment å inneholde en spørring? Den er vel beregnet for at folk ikke skal kunne putte SQL-injections inn i variabler som bare skal inneholde f.eks. tekst. Stopp meg hvis jeg er på feil jorde nå, men så vidt jeg kan se vil mysql_real_escape_string() enten ikke gjøre noe, eller gjøre at du ikke får kjørt noen av databasespørringene som kommer gjennom GET i det hele tatt.

Lenke til kommentar

Uff, spørringen er nå som følger, men allikevel funker det ikke. Og som vanlig funker det i PHPMyAdmin. Alt skulle kanskje indikere at noe er galt med scriptet som kjører spørringen, men jeg har prøvd andre, enklere spørringer, som ikke inneholder variabler og det funker perfekt!

 

DELETE FROM Payments WHERE Username = "Serenity" AND Time = 1201350611 AND Comment = "Ingen kommentar." AND Amount = 150

Lenke til kommentar

Får du fremdels den samme feilmeldingen?

 

Hva skjer hvis du skriver spørringen rett inn i PHP-scriptet?

mysql_query('
DELETE FROM Payments 
WHERE Username = "Serenity" 
AND Time = 1201350611 
AND Comment = "Ingen kommentar." 
AND Amount = 150
');

Endret av G2Petter
Lenke til kommentar

Å huff, for en flau feil. Det funket, G2Petter, og jeg fant nettopp ut hvorfor. Feilen lå i koden. Jeg stripslashet innholdet i $_GET, men jeg brukte ikke den faktiske variabelen jeg satt. Endret følgende kode og vips - så funket alt.

 

	if ( get_magic_quotes_gpc () )
	$query = stripslashes ( $_GET['query'] );
else
	$query = $_GET['query'];

if ( mysql_query ( $_GET['query'] ) ) {

	if ( get_magic_quotes_gpc () )
	$query = stripslashes ( $_GET['query'] );
else
	$query = $_GET['query'];

if ( mysql_query ( $query ) ) {

 

Takker for all hjelp!

Endret av Jonas
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...