[PHP / SQL] Wat doet phpmyadmin wat ik niet doe? (bug ?)

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb echt een rare situatie ontdekt. Namelijk dat m'n query's in phpmyadmin wel werken, maar in m'n eigen script niet, terwijl de query's gewoon goed zijn eigenlijk.

Zelfs als ik 'Create php code' doe in phpmyadmin werkt het niet.

Het gaat bijv. om de volgende code:
PHP:
1
2
3
4
5
6
if (is_uploaded_file ($HTTP_POST_FILES['foto']['tmp_name'])) {
 $time = time ();
 move_uploaded_file ($HTTP_POST_FILES['foto']['tmp_name'], $_SERVER[DOCUMENT_ROOT] . '/joost/data/user/' . $time . $HTTP_POST_FILES['foto']['name']);
 $sql = 'UPDATE gebruikers SET foto = \'1070560930tekst.txt\' WHERE id = \'2\'';
 mysql_query ($sql);
}


Zelfs mysql_affected_rows geeft aan dat de query succesvol is (evenals mysql_error). Het veld foto is van het type longtext dus hier ligt het ook niet aan lijkt me.

Ik ben echt ten einde raad... ook de inhoud van foto veranderen naar hoi bijv. werkt niet. Terwijl het updaten van andere tabellen prima gaat!

Acties:
  • 0 Henk 'm!

  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Werkt dit?

PHP:
1
2
$sql = "UPDATE gebruikers SET foto = '1070560930tekst.txt' WHERE id = '2' "; 
mysql_query ($sql);


(Dit ligt denk ik wel erg voor de hand, je hebt het vast al geprobeerd.... 8)7 )

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ja, 1000 keer ben er al dagen mee bezig

Acties:
  • 0 Henk 'm!

Verwijderd

Ook al getest vanaf de command line mbv mysql, en weet je 100% zeker dat de velden bestaan, en de database goed is?!
Zo`n ingewikkelde query is het toch niet zou je denken, dus het moet wel iets heel stoms zijn!

Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Welke PHP versie gebruik je? Al gehoord van $_POST?

PHP:
1
$sql = "UPDATE gebruikers SET foto = '1070560930tekst.txt' WHERE id = 2 ";
Deze al geprobeerd?
.edit: ik zag t te laat idd. :)

[ Voor 70% gewijzigd door RedRose op 04-12-2003 19:35 ]

Sundown Circus


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
$_POST gaat het niet om want ook query's zonder variabelen werken niet... PHP versie 4.2.1

Acties:
  • 0 Henk 'm!

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 01:23
Idd, id is een integer veld (waarschijnlijk), en je probeert nu een char veld te zoeken.

Acties:
  • 0 Henk 'm!

  • Alex
  • Registratie: Juli 2001
  • Laatst online: 20-08 21:38
FlamerX schreef op 04 december 2003 @ 19:36:
Idd, id is een integer veld (waarschijnlijk), en je probeert nu een char veld te zoeken.
MySQL valt hier normaliter niet over...

Deze post is bestemd voor hen die een tegenwoordige tijd kunnen onderscheiden van een toekomstige halfvoorwaardelijke bepaalde subinverte plagiale aanvoegend intentioneel verleden tijd.
- Giphart


Acties:
  • 0 Henk 'm!

Verwijderd

Heb je een enctype ingesteld bij het <form>? (dit was ik laatst vergeten bij een upload scriptje)

code:
1
<form enctype="MULTIPART/FORM-DATA">


als je dit niet hebt is hij namelijk ook niet geupload, en doet hij de rest ook niet.
(wordt nergens verteld of hij de rest wel of niet uitvoert ;))

[ Voor 40% gewijzigd door Verwijderd op 04-12-2003 23:16 ]


Acties:
  • 0 Henk 'm!

  • JaQ
  • Registratie: Juni 2001
  • Laatst online: 23:32

JaQ

geeft mysql_query geen result? Dan werkt het prima. (zolang je connected bent met een database uiteraard).

ik gebruik altijd:
PHP:
1
2
$query="SELECT kolom FROM tabel WHERE voorwaarde";
$sql = mysql_query($query);


*disclaimer: ik ben geen, ik herhaal geen, php goeroe *

Egoist: A person of low taste, more interested in themselves than in me


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

wat zegt mysql_error() :?

Acties:
  • 0 Henk 'm!

Verwijderd

Raar probleem. Kan zijn dat de is_uploaded_file in je if statement niet werkt en dat inderdaad de rest dan ook niet uitgevoerd wordt. Want dan geeft mysql_error natuurlijk ook geen fout aan..

Maak eens een nieuw bestand en roep deze los aan:

PHP:
1
2
3
4
5
6
7
8
9
<?

// nog even verbinding maken hier
// ik ben test.php

$sql = "UPDATE gebruikers SET foto = '1070560930tekst.txt' WHERE id = 2"; 
mysql_query ($sql) or die("Foutmelding:<br>" . mysql_error()); 

?>


..gaat werken hoor ;)

zoniet, dan is er toch echt iets goed mis... en dat lijkt me sterk!

[ Voor 24% gewijzigd door Verwijderd op 05-12-2003 09:03 ]


Acties:
  • 0 Henk 'm!

Verwijderd

of:

PHP:
1
$vraag = mysql_query($query)or die(mysql_error());


oftewel niet

PHP:
1
mysql_query($query)or die(mysql_error());


aangezien mysql_query een 1 of 0 terug geeft...

[ Voor 47% gewijzigd door Verwijderd op 05-12-2003 09:09 ]


Acties:
  • 0 Henk 'm!

  • trogdor
  • Registratie: Mei 2003
  • Laatst online: 22-04 10:17
Probeer het eens met single quotes om de tablename.
dus:
$sql = "UPDATE 'gebruikers' SET foto = '1070560930tekst.txt' WHERE id = '2' ";

Als je tables met phpmyadmin aanmaakt wil dat wel eens het probleem zijn.

Acties:
  • 0 Henk 'm!

  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 22:39

Tux

trogdor schreef op 05 december 2003 @ 12:09:
Probeer het eens met single quotes om de tablename.
dus:
$sql = "UPDATE 'gebruikers' SET foto = '1070560930tekst.txt' WHERE id = '2' ";

Als je tables met phpmyadmin aanmaakt wil dat wel eens het probleem zijn.
phpMyAdmin voegt toch nooit quotes toe :P

Dus singe quotes kan het probleem niet zijn. Backticks zou je kunnen proberen in dit geval :P

Maar is $_FILES[] gebruiken in plaats van $HTTP_POST_FILES[] niet een mogelijkheid?

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 05 december 2003 @ 09:08:
of:

PHP:
1
$vraag = mysql_query($query)or die(mysql_error());


oftewel niet

PHP:
1
mysql_query($query)or die(mysql_error());


aangezien mysql_query een 1 of 0 terug geeft...
offtopic:
Wat bedoel je nou mee? Ik snap 't eigenlijk niet zo goed...?

[ Voor 5% gewijzigd door Verwijderd op 05-12-2003 13:21 ]


Acties:
  • 0 Henk 'm!

  • trogdor
  • Registratie: Mei 2003
  • Laatst online: 22-04 10:17
okay mischien waren het backticks :-)

Ik ben een jaar geleden overgestapt naar postgresql (geen moment spijt) dus sindsdien is mijn mysql kennis aan het roesten.

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 05 december 2003 @ 13:21:
[...]


offtopic:
Wat bedoel je nou mee? Ik snap 't eigenlijk niet zo goed...?
dat is geen offtopic vraag hoor ;)


maar kijk:

als je de functie mysql_query aanroept moet je dat zo doen, dan de terug gegeven waarde opgenomen kan worden in een variabel..

dus:


PHP:
1
$waarde = mysql_query($sql)or die(mysql_error());


de waarde die de functie mysql_error() terug geeft, word nu opgevangen in de variabel $waarde.
De waarde kan een true (1) of false (0) zijn, wat respectievelijk aangeeft of de query is gelukt of niet.

dus niet rechtstreeks de functie aanroepen met:

PHP:
1
mysql_query($sql)or die(mysql_error());


maar zorgen dat de return value opgevangen word in een variabel:

PHP:
1
$waarde = mysql_query($sql)or die(mysql_error());



om mijn theorie te ondersteunen een quote van de php.net site:
Only for SELECT,SHOW,EXPLAIN or DESCRIBE statements mysql_query() returns a resource identifier or FALSE if the query was not executed correctly. For other type of SQL statements, mysql_query() returns TRUE on success and FALSE on error. A non-FALSE return value means that the query was legal and could be executed by the server. It does not indicate anything about the number of rows affected or returned. It is perfectly possible for a query to succeed but affect no rows or return no rows.

[ Voor 29% gewijzigd door Verwijderd op 05-12-2003 14:55 ]


Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Mjah, hoe dan ook. Probeer je queries gewoon eens te echo-en. Check of het script langs de if gaat. Lees $_* vars nog eens door. Check of de record uberhaupt wel bestaat. Verder kan ik er weinig over zeggen iig. ;) Oh ja: error_reporting op E_ALL. ;)

[ Voor 7% gewijzigd door RedRose op 05-12-2003 17:32 ]

Sundown Circus


Acties:
  • 0 Henk 'm!

  • MisterData
  • Registratie: September 2001
  • Laatst online: 29-08 20:29
je gebruikt dezelfde username om in te loggen op MySQL? Het kan zijn dat phpMyAdmin een ander account heeft (met meer rechten) waardoor jouw query niet werkt :?

Acties:
  • 0 Henk 'm!

Verwijderd

of was het wat ik zei, dat je enctype vergeten bent waardoor hij niet upload waardoor bij de if false komt ergo: geen mysql query

Acties:
  • 0 Henk 'm!

  • Bubbaman
  • Registratie: Juli 2003
  • Laatst online: 20-03-2022
Als ik het allemaal goed lees heeft Onshore helemaal gelijk....

De code moet dus worden:

PHP:
4
5
6
7
8
9
if (is_uploaded_file ($HTTP_POST_FILES['foto']['tmp_name'])) { 
$time = time (); 
move_uploaded_file ($HTTP_POST_FILES['foto']['tmp_name'], $_SERVER[DOCUMENT_ROOT] . '/joost/data/user/' . $time . $HTTP_POST_FILES['foto'] ['name']); 
$sql = 'UPDATE gebruikers SET foto = \'1070560930tekst.txt\' WHERE id = \'2\''; 
$result = mysql_query ($sql) or die("Error in query $sql"); 
}


Er van uitgaande dat je nog steeds connected bent met de database.

Rob

Acties:
  • 0 Henk 'm!

Verwijderd

volgens mij heb ik gelijk ja, moet je maar ff testen..

en je kan het beste van

PHP:
1
 or die("Error in query $sql");


maken:

PHP:
1
 or die(mysql_error());


dan krijg je de error message van Mysql, en dan zie je snel genoeg wat er fout zit, mocht het fout gaan in de query..

[ Voor 3% gewijzigd door Verwijderd op 05-12-2003 19:34 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Waarom reageert de topic starter niet meer hier? :s

Acties:
  • 0 Henk 'm!

Verwijderd

Nog één ding: misschien heeft de topicstarter gewoon niet de betreffende database geselecteerd. Daar moet hij met mysql_error() echter gauw genoeg achter komen.
Pagina: 1