Avatar billede hmm10 Nybegynder
08. april 2003 - 18:09 Der er 17 kommentarer og
1 løsning

tal = ok, bogstav = mysql_fetch_array():

Hej!

Jeg har et script herunder, der tjekker om en id eksisterer i min myqsl via $id. Eksisterer id'en vises design.php og hvis den ikke gør vises HTTP404.php.

Scriptet virker så længe at $id er et tal.
MEN er $id et bogstav vises: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ... on line 6 (linje 6 er: '  $undersog = mysql_query("SELECT * FROM `side` WHERE `id` = '$id' ");  ')

Her er mit script:

$undersog = mysql_query("SELECT * FROM `side` WHERE `id` = '$id' ");
$res = mysql_num_rows($undersog);

if ($res == '0'){
  include("modul/HTTP404.php");     // ikke oprettet
}else{
  include("design.php");         // oprettet
};

Hvad er min fejl? Hvad kan rette fejlen? Andre forslag?

MVH
HMM10
Avatar billede postndk Nybegynder
08. april 2003 - 18:22 #1
hvad format er id i din tabel ? er det en int ?
Avatar billede hmm10 Nybegynder
08. april 2003 - 18:23 #2
ja.. det er int
Avatar billede jensgram Nybegynder
08. april 2003 - 18:24 #3
Prøv:

$undersog = mysql_query("SELECT id FROM side WHERE id = " . $id);
Avatar billede htm Nybegynder
08. april 2003 - 18:25 #4
Så har du jo selv svaret :-)

En int er en integer som dermed kun kan indeholde hele tal! Derfor den melder fejl med bogstaver!

Ret typen til char eller varchar med en længde på eks. 10
Avatar billede jensgram Nybegynder
08. april 2003 - 18:25 #5
Nååh  - kan du så ikke:

$undersog = mysql_query("SELECT id FROM side WHERE id = " . (int)$id);
Avatar billede jensgram Nybegynder
08. april 2003 - 18:26 #6
htm > Tror du at "id" indeholder andet end tal? Jeg tror, at problemet er, at man kan sætte:

$id = "gnutra12";
Avatar billede hmm10 Nybegynder
08. april 2003 - 18:28 #7
htm >> mr_noname har ret. Der er kun tal i i min database..

mr_noname >> Ja - lige præsis. Men dine forslag virker ikke.. kun med tal
Avatar billede htm Nybegynder
08. april 2003 - 18:29 #8
i så fald skal det være noget ala

if (!is_int($id)) {
echo "Det er ikke kun tal";
}
else {
$undersog = mysql_query("SELECT * FROM `side` WHERE `id` = '$id' ");
$res = mysql_num_rows($undersog);

if ($res == '0'){
  include("modul/HTTP404.php");    // ikke oprettet
}else{
  include("design.php");        // oprettet
};
Avatar billede jensgram Nybegynder
08. april 2003 - 18:29 #9
Damn, hvad skriver den?
Avatar billede jensgram Nybegynder
08. april 2003 - 18:30 #10
$id = ereg_replace("[^0-9]", '', $id);
Avatar billede htm Nybegynder
08. april 2003 - 18:30 #11
Hmm - du skal bruge http://www.php.net/manual/en/function.is-numeric.php i stedet for is_int
Avatar billede hmm10 Nybegynder
08. april 2003 - 18:35 #12
htm >> dit ala virker ikke bedre - stadig samme problem..
Avatar billede htm Nybegynder
08. april 2003 - 18:42 #13
Prøv og se hvad jeg mener her: http://www.nothing.dk/scripts/ertal.php?id=123

Prøv og ændr værdien af id - som du ser virker den fint!
Avatar billede jensgram Nybegynder
08. april 2003 - 18:43 #14
Dette virker:

$id = "gnugnre12gd23";
$id = ereg_replace("[^0-9]", '', $id);
print $id;

- derfor må du kunne bruge dette i dit SQL-kald.
Avatar billede jensgram Nybegynder
08. april 2003 - 18:45 #15
$undersog = mysql_query("SELECT id FROM side WHERE id = " . ereg_replace("[^0-9]", '', $id));
$res = mysql_num_rows($undersog);

if ($res < 1){
  include("modul/HTTP404.php");    // ikke oprettet
}else{
  include("design.php");        // oprettet
};
Avatar billede hmm10 Nybegynder
08. april 2003 - 18:49 #16
mr_noname >> Stadig samme problem..
Avatar billede hmm10 Nybegynder
08. april 2003 - 19:17 #17
Det virker nu. Indsatte @ foran funktionen, der henter fra mysql på design.php:
.. = @mysql_query("SELEC...
Avatar billede jensgram Nybegynder
08. april 2003 - 19:25 #18
Hmmm
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