Kom ihåg mig?
Home Menu

Menu


Konstigt problem med PHP

Ämnesverktyg Visningsalternativ
Oläst 2012-01-25, 15:41 #1
Jacce Jacce är inte uppkopplad
Nykomling
 
Reg.datum: Nov 2010
Inlägg: 19
Jacce Jacce är inte uppkopplad
Nykomling
 
Reg.datum: Nov 2010
Inlägg: 19
Standard Konstigt problem med PHP

Hej, jag har följande kod inom en funktion (det finns ingen annan kod där, $option är den enda parametern):
PHP-kod:
    var_dump($option);
    
$temp mysql_fetch_assoc(mysql_query("SELECT * FROM lottery_general WHERE option='$option'"));
    
var_dump($option); 
Men av någon anledning så kommer det här fram på skärmen:
Kod:
string(10) "admin_pass"
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/a7503145/public_html/lotteri/functions.php on line 117
string(10) "admin_pass" string(4) "next" string(4) "next" string(4) "pott" string(4) "pott" string(10) "total_pott" string(10) "total_pott"
Min största fråga är hur $option plötsligt blev ändrad, då jag helt enkelt inte förstår mig på vad som händer där. Är det en bugg eller har jag missat något?
Kör förresten på PHP 5.2.17, utan möjlighet att byta version själv.
Jacce är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-01-25, 15:59 #2
Vebut Vebut är inte uppkopplad
Medlem
 
Reg.datum: Apr 2008
Inlägg: 263
Vebut Vebut är inte uppkopplad
Medlem
 
Reg.datum: Apr 2008
Inlägg: 263
Låter som att variablen skrivs om till en array innan din fråga till databasen. Troligtvis används denna variabel på flera ställen i samma fil eller inom samma instans.

Edit: Eller inte, koden ligger i en loop va? Då beror det mest troligen på att du skriver över $option i denna loop.
Vebut är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-01-25, 16:07 #3
Jacce Jacce är inte uppkopplad
Nykomling
 
Reg.datum: Nov 2010
Inlägg: 19
Jacce Jacce är inte uppkopplad
Nykomling
 
Reg.datum: Nov 2010
Inlägg: 19
Fullständig kod (gjorde lite ändringar, blir dock ingen skillnad):
PHP-kod:
function getSetting($option) {
    echo(
$option);
    
$temp mysql_fetch_assoc(mysql_query("SELECT value FROM lottery_general WHERE option='$option'"));
    echo(
$option);
    
$option '';
    return 
$temp['value'];
}

$admin_pass getSetting('admin_pass');
$next getSetting('next');
$pott intval(getSetting('pott'));
$total_pott intval(getSetting('total_pott')); 
Jacce är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-01-25, 16:21 #4
nosnaj nosnaj är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Mar 2005
Inlägg: 1 012
nosnaj nosnaj är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Mar 2005
Inlägg: 1 012
Du anropar ju getSetting() 4 gånger med 4 olika inparamterar.
Totalt görs då 8 var_dump (2 i varje funktionsanrop) vilket är exakt vad du får fram på skärmen.

Frågan är då varför du tycker det är konstigt?
nosnaj är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-01-25, 16:24 #5
Jacce Jacce är inte uppkopplad
Nykomling
 
Reg.datum: Nov 2010
Inlägg: 19
Jacce Jacce är inte uppkopplad
Nykomling
 
Reg.datum: Nov 2010
Inlägg: 19
Visade sig att av någon anledning funkade det inte eftersom tabellen hette option. Funkade när jag bytte namn på den.
Jacce är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-01-25, 17:23 #6
Timofey Timofey är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2006
Inlägg: 2 041
Timofey Timofey är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2006
Inlägg: 2 041
OPTION är ett reserverat ord i MySQL - se http://dev.mysql.com/doc/refman/5.5/...ved-words.html
Vill du använda det som ett tabellnamn måste du använda `option`
Timofey är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-01-26, 17:19 #7
iostreams avatar
iostream iostream är inte uppkopplad
Medlem
 
Reg.datum: Feb 2008
Inlägg: 92
iostream iostream är inte uppkopplad
Medlem
iostreams avatar
 
Reg.datum: Feb 2008
Inlägg: 92
Det egentliga problemet är den icke-existerande felhanteringen:

PHP-kod:
mysql_fetch_assoc(mysql_query("SELECT ...")); 
Citat:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource
Detta betyder helt enkelt att mysql_query() returnerade något annat än en resource, vilken skickades in till mysql_fetch_assoc, som bara förväntar en resource.

Citat:
array mysql_fetch_assoc ( resource $result )
Citat:
For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error.

For other type of SQL statements, INSERT, UPDATE, DELETE, DROP, etc, mysql_query() returns TRUE on success or FALSE on error.
Ponera istället följande kod som exempel:
PHP-kod:
$sql "SELECT ...";
$query mysql_query($sql);
if (
$query === FALSE) {
    
error_log('MySQL Error: 'mysql_error());
    
header('HTTP/1.1 503 Service Temporarily Unavailable');
    echo 
'<h1>Ops, error!</h1>';
    return;
}

$res mysql_fetch_assoc($query); 
iostream är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 22:26.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017