webForumDet fria alternativet

NOOB problem med MYSQL SELECT

19 svar · 827 visningar · startad av Hampan90

Hampan90Medlem sedan feb. 2007137 inlägg
#1

Hej!
Har precis börjat att lära mig mera om databaser och hur man driver en egen databasdriven webplats genom denna bok:
http://www.bokus.com/b/9780975240212.html?pt=search_result

Och jag har nu skapat min databas, och det funkade klockrent när jag kollade i mysql fösntret.

Men nu försöker jag få fram Namn fältet i tabellen resturanger i databasen takeaway som ligger på samma dator.

Här är min kod:

<?php

// Ansluter till databasservern
$dbcheck = @mysql_connect('localhost' 'root' 'XXXXXX');
// Kollar om det gick att asluta till databasservern
if (!$dbcheck) {
	exit('<p>Kan inte ansluta till databasservern, var god försök senare!</p>');
}

// Anluter till databasen
@mysql_select_db('takeaway' , $dbcheck);
//Kollar om det gick att asluta till databasen
if (!@mysql_select_db('takeaway')) {
	exit('<p>Kan inte ansluta till databasen, var god försök senare!</p>');
}

//Söker i namn kolumnen
$result = @mysql_query('SELECT namn FROM resturanger');
// Kollar om det gick att skicka förfrågan till databasen
if (!$result) {
	exit('<p>Kan inte skicka förfrågan, var god försök senare!</p>');
}

// Visar upp resultatet i en loop
while ($row = mysql_fetch_array($result)) {
	echo '<p>' . $row['namn'] . '</p>';
}

?>

Problemet är att den varken skriver ut "Namn" fältet eller Några felmedelanden, vilket är mycket konstigt, för jag har ju sagt att den ska skriva det så fort något går snett.

Så varför ser jag absolut INGENTING när jag provar denna kod?
(PHP funkar, det har jag kollat med en enkel echo")

XXXXXX = minn lösen till servern, vill inte lämna ut det.

sabbacusMedlem sedan juli 2002630 inlägg
#2

Släng in
var_dump($result); efter att $result deklarerats

släng in
var_dump($row); ovanför din echosats

Ta också bort dina @-tecken tills vidare.
Vad får du ut?

Hampan90Medlem sedan feb. 2007137 inlägg
#3

Ingenting.

Vad gör var_dump?

Fasen va trist det är när man precis har börjat och inte får fram något när man gör efter boken.

EDIT:

Detta funkar:
echo "Hej!";

Men inte detta:
mysql_connect("localhost", "root", "password") or die(mysql_error());
(I detta fall så har jag ej angett något password för att framtvinga ett felmedelande)

tantenMedlem sedan nov. 20051 596 inlägg
#4

Om du ändrar första raden till
$dbcheck = @mysql_connect("localhost","root","lösenordet");

Vad händer då?

CompusaMedlem sedan jan. 20023 327 inlägg
#5

tanten, har svårt att se varför din kodrad skulle göra skillnad? Det enda du har ändrat på är att byta ut enkel-fnuttarna mot dubbelfnuttar. I PHP är det fördelaktigt att använda enkelfnuttar förutom när man vill ha interpolering:

$a = 'apple';
$b = 'banana'
print '$a and $b'; // skriver ut "$a and $b"
print "$a and $b"; // skriver ut "apple and banana"

// för samma resultat med enkelfnuttar krävs;
print $a . ' and ' . $b;

Hampan, vad använder du för konfiguration, wamp?

Du skulle även kunna testa att skapa en php-fil och köra följande:

<?php
$con = mysql_connect('localhost','wrong_user','wrong_pwd');
if (!$con)
  {
  die(mysql_error());
  }
mysql_close($con);
?>

Om du inte får något felmeddelande av detta så bör du kolla din php.ini-fil och se om denna rad finns med "error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT" och att den inte är kommenterad (en enkelfnutt innan).

tantenMedlem sedan nov. 20051 596 inlägg
#6

Jag håller med dig Compusa, det var bara det att jag tog hem scriptet och testade och då fick jag felmeddelandet
syntax error, unexpected T_CONSTANT_ENCAPSED_STRING
och eftersom det inte fanns någon ; före så gissade jag att det hade med fnuttarna att göra... och när jag ändrade så som jag föreslog så fungerade det.
Jag har wamp och är ny... och tyckte scriptet såg så märkligt ut och ville testa varför han inte fick ut något... tänker inte använda det själv... :-)

CompusaMedlem sedan jan. 20023 327 inlägg
#7

Okej, ville bara klargöra det med fnuttarna då det är väldigt vanligt "fel" att använda enbart använda dubbelfnuttar i PHP. :)

tantenMedlem sedan nov. 20051 596 inlägg
#8

Och om det ser ut så här då? ('localhost','root','XXXXXX'); ?

Hampan90Medlem sedan feb. 2007137 inlägg
#9

Verkar som hela localhost buggar för mig. Tänkte installera om Apache och PHP sen, jag gorde allt enligt boken, men uppenbarligen så vart det inte så bra.

Har ni någon anan bra guide som går igenom tydligt vad man skall göra när man installerar?
Jag tycker att webdesignskolans är bra, är den bra?

CompusaMedlem sedan jan. 20023 327 inlägg
#10

Alt1: mysql_connect('localhost', 'root', 'XXXXXX');
Alt2: mysql_connect("localhost", "root", "XXXXXX");

Alternativ ett är att föredra. När man använder dubbel-fnuttar säger man till PHP att "parsa" strängen.

Det bästa är ju att ha databas-inställningarna i en config-fil som ligger utanför roten.

<?php
define('DB_URL', 'localhost');
define('DB_USER', 'user');
define('DB_PASSWORD', 'password');
?>
<?php
require_once('../config.php');

$con = mysql_connect(DB_URL, DB_USER, DB_PASSWORD); 
?>

Vet ej om det var detta du tänkte på?

CompusaMedlem sedan jan. 20023 327 inlägg
#11

Hampan90 skrev:

Har ni någon anan bra guide som går igenom tydligt vad man skall göra när man installerar?

Hampan med wamp behövs inga guider, allt du behöver installeras med WAMP. Avinstallera först php, apache och mysql. Därefter laddar du ner wamp här:http://www.wampserver.com/en/download.php

Bara att dubbelklicka på filen och installera. Vid installation kan du välja om du vill att wamp ska köras som service och starta automatiskt när startar windows eller att du manuellt köra igång wamp via startmenyn. När du startar wamp så ser du en ikon i "trayen" brevid klockan. Därifrån kan du bland annat starta/stoppa apache och mysql-servern. Sidan når du på vanligt vis via localhost.

Hampan90Medlem sedan feb. 2007137 inlägg
#12

Jo, jag har kört många gånger med WAMP, men jag går en IT utbildning och vill lära mig det "riktiga" sättet. För webbhotell kör väl inte med wamp va?

Så, är webdesignskolan bra eller inte?

CompusaMedlem sedan jan. 20023 327 inlägg
#13

Har ingen aning om hurvida webdesignskolan är bra eller inte men om du nu ska göra det på det "riktiga" sättet, vilket iofs inte är så svårt då jag skulle jag förlitat mig på den officiella dokumentationen för apache, php och mysql.

Hampan90 skrev:

För webbhotell kör väl inte med wamp va?

För webbhotell är LAMP ganska vanligt.

colioneMedlem sedan juni 20014 421 inlägg
#14

Fast det är ju sällan man laddar hem en installationsfil som man bara klickar på när man ska köra LAMP

CompusaMedlem sedan jan. 20023 327 inlägg
#15

colione skrev:

Fast det är ju sällan man laddar hem en installationsfil som man bara klickar på när man ska köra LAMP

Givetvis, men i vissa distrubitioner är det nästa lika enkelt att installera LAMP som WAMP, några få kommandon i terminalen. Men som sagt vill du (Hampan90) göra det på det "riktiga" sättet så laddar du hem Apache, PHP och MySQL var för sig och installerar/konfigurerar med hjälp av medföljande dokumentation för respektive teknik.

Hampan90Medlem sedan feb. 2007137 inlägg
#16

Ok, nu har jag installerat wamp, och försöker komma in för att administrera databaserna via cmd.

Jag sätter ett root password:

C:\wamp\mysql\bin>mysql -u root mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.41-community-nt MySQL Community Edition (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> UPDATE mysql.user SET Password=PASSWORD("XXXXXX") WHERE User="root";
Query OK, 1 row affected (0.11 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye

XXXXXX= mitt lösen

Men när jag försöker logga in med mitt nya lösen så får jag detta istället för att jag ska logga in:

C:\wamp\mysql\bin>mysql - loclahost -u root -p
mysql  Ver 14.12 Distrib 5.0.41, for Win32 (ia32)
Copyright (C) 2002 MySQL AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license
Usage: mysql [OPTIONS] [database]
  -?, --help          Display this help and exit.
  -I, --help          Synonym for -?
  --auto-rehash       Enable automatic rehashing. One doesn't need to use
                      'rehash' to get table and field completion, but startup
                      and reconnecting may take a longer time. Disable with
                      --disable-auto-rehash.
  -A, --no-auto-rehash
                      No automatic rehashing. One has to use 'rehash' to get
                      table and field completion. This gives a quicker start of
                      mysql and disables rehashing on reconnect. WARNING:
                      options deprecated; use --disable-auto-rehash instead.
  -B, --batch         Don't use history file. Disable interactive behavior.
                      (Enables --silent)
  --character-sets-dir=name
                      Directory where character sets are.
  --default-character-set=name
                      Set the default character set.
  -C, --compress      Use compression in server/client protocol.
  -#, --debug[=#]     This is a non-debug version. Catch this and exit
  -D, --database=name Database to use.
  --delimiter=name    Delimiter to be used.
  -e, --execute=name  Execute command and quit. (Disables --force and history
                      file)
  -E, --vertical      Print the output of a query (rows) vertically.
  -f, --force         Continue even if we get an sql error.
  -G, --named-commands
                      Enable named commands. Named commands mean this program's
                      internal commands; see mysql> help . When enabled, the
                      named commands can be used from any line of the query,
                      otherwise only from the first line, before an enter.
                      Disable with --disable-named-commands. This option is
                      disabled by default.
  -g, --no-named-commands
                      Named commands are disabled. Use \* form only, or use
                      named commands only in the beginning of a line ending
                      with a semicolon (;) Since version 10.9 the client now
                      starts with this option ENABLED by default! Disable with
                      '-G'. Long format commands still work from the first
                      line. WARNING: option deprecated; use
                      --disable-named-commands instead.
  -i, --ignore-spaces Ignore space after function names.
  --local-infile      Enable/disable LOAD DATA LOCAL INFILE.
  -b, --no-beep       Turn off beep on error.
  -h, --host=name     Connect to host.
  -H, --html          Produce HTML output.
  -X, --xml           Produce XML output
  --line-numbers      Write line numbers for errors.
  -L, --skip-line-numbers
                      Don't write line number for errors. WARNING: -L is
                      deprecated, use long version of this option instead.
  -n, --unbuffered    Flush buffer after each query.
  --column-names      Write column names in results.
  -N, --skip-column-names
                      Don't write column names in results. WARNING: -N is
                      deprecated, use long version of this options instead.
  -O, --set-variable=name
                      Change the value of a variable. Please note that this
                      option is deprecated; you can set variables directly with
                      --variable-name=value.
  --sigint-ignore     Ignore SIGINT (CTRL-C)
  -o, --one-database  Only update the default database. This is useful for
                      skipping updates to other database in the update log.
  -p, --password[=name]
                      Password to use when connecting to server. If password is
                      not given it's asked from the tty.
  -W, --pipe          Use named pipes to connect to server.
  -P, --port=#        Port number to use for connection.
  --prompt=name       Set the mysql prompt to this value.
  --protocol=name     The protocol of connection (tcp,socket,pipe,memory).
  -q, --quick         Don't cache result, print it row by row. This may slow
                      down the server if the output is suspended. Doesn't use
                      history file.
  -r, --raw           Write fields without conversion. Used with --batch.
  --reconnect         Reconnect if the connection is lost. Disable with
                      --disable-reconnect. This option is enabled by default.
  -s, --silent        Be more silent. Print results with a tab as separator,
                      each row on new line.
  --shared-memory-base-name=name
                      Base name of shared memory.
  -S, --socket=name   Socket file to use for connection.
  --ssl               Enable SSL for connection (automatically enabled with
                      other flags). Disable with --skip-ssl.
  --ssl-ca=name       CA file in PEM format (check OpenSSL docs, implies
                      --ssl).
  --ssl-capath=name   CA directory (check OpenSSL docs, implies --ssl).
  --ssl-cert=name     X509 cert in PEM format (implies --ssl).
  --ssl-cipher=name   SSL cipher to use (implies --ssl).
  --ssl-key=name      X509 key in PEM format (implies --ssl).
  --ssl-verify-server-cert
                      Verify server's "Common Name" in its cert against
                      hostname used when connecting. This option is disabled by
                      default.
  -t, --table         Output in table format.
  -T, --debug-info    Print some debug info at exit.
  --tee=name          Append everything into outfile. See interactive help (\h)
                      also. Does not work in batch mode. Disable with
                      --disable-tee. This option is disabled by default.
  --no-tee            Disable outfile. See interactive help (\h) also. WARNING:
                      option deprecated; use --disable-tee instead
  -u, --user=name     User for login if not current user.
  -U, --safe-updates  Only allow UPDATE and DELETE that uses keys.
  -U, --i-am-a-dummy  Synonym for option --safe-updates, -U.
  -v, --verbose       Write more. (-v -v -v gives the table output format).
  -V, --version       Output version information and exit.
  -w, --wait          Wait and retry if connection is down.
  --connect_timeout=# Number of seconds before connection timeout.
  --max_allowed_packet=#
                      Max packet length to send to, or receive from server
  --net_buffer_length=#
                      Buffer for TCP/IP and socket communication
  --select_limit=#    Automatic limit for SELECT when using --safe-updates
  --max_join_size=#   Automatic limit for rows in a join when using
                      --safe-updates
  --secure-auth       Refuse client connecting to server if it uses old
                      (pre-4.1.1) protocol
  --show-warnings     Show warnings after every statement.

Default options are read from the following files in the given order:
C:\my.ini C:\my.cnf C:\WINDOWS\my.ini C:\WINDOWS\my.cnf C:\wamp\mysql\my.ini C:\
wamp\mysql\my.cnf
The following groups are read: mysql client
The following options may be given as the first argument:
--print-defaults        Print the program argument list and exit
--no-defaults           Don't read default options from any options file
--defaults-file=#       Only read default options from the given file #
--defaults-extra-file=# Read this file after the global files are read

Variables (--variable-name=value)
and boolean options {FALSE|TRUE}  Value (after reading options)
--------------------------------- -----------------------------
auto-rehash                       TRUE
character-sets-dir                (No default value)
(..... massor av text)
show-warnings                     FALSE

C:\wamp\mysql\bin>

Varför blir det såhär? har haft problemet förut, var lite därför som jag inte ville köra wamp.

CompusaMedlem sedan jan. 20023 327 inlägg
#17

Testa följande när du är i \wamp\mysql\bin:

C:\wamp\mysql\bin>[B]mysql.exe -h loclahost -u användarnamn -p lösenord[/B]

Byt ut användarnamn och lösenerod mot dina uppgifter.

metalboyMedlem sedan jan. 2005953 inlägg
#18

loclahost ska väl vara localhost

Har ditt ursprungliga problem blivit löst? Om inte kan det ju vara bra att ta bort @ på alla ställen du använder det, eftersom det gör att felmeddelanden inte visas.

CompusaMedlem sedan jan. 20023 327 inlägg
#19

metalboy skrev:

loclahost ska väl vara localhost

Sant, sedan innehåller mitt kommando fler fel såg jag...

Se först till att du står i "C:\wamp\mysql\bin>" (eller liknande) i kommandprompten.

Skriv sedan följande:

mysql -u root -p

eller

mysql -h localhost -u root -p

När du tryckt på enter så kommer du behöva ange ditt lösenord. Att du inte kommit någon vart beror på att du angett växlarna fel. Först anger du växel följt av värde dvs "-växel värde" exempelvis "-u användarnamn".

Hampan90Medlem sedan feb. 2007137 inlägg
#20

Tack för alla tipps, jag löste det genom att jag klickade på wamp ikonen och valde mysql>mysql console Då funkade det.
Nu löste sig även mina felmedelanden och så. Tack för all hjälp! Ett riktigt bra forum detta!

134 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)