Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  27 1298
Hei folkens

Jeg har et problem, igjen - med mysql. Denne gangen er det fetch_assoc. Her er koden jeg har skrevet:


Kode

require("header.php");

$sql = "SELECT entries.*, categories.cat FROM entries, categories
WHERE entries.cat_id = categories.id
ORDER BY dateposted DESC
LIMIT 1;";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);

require("footer.php");
Jeg får følgende feilmelding:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in D: \wamp\www\blogtastic\index.php on line 28
Vis hele sitatet...
Jeg blir snart gal, hvordan kan dette var ikke godkjent MySQL resultat ? Jeg har jo gjort absolutt alt riktig ?

Håper noen kan hjelpe meg.

Tusen hjertelig takk skal dere ha.


Hilsen
Donquijote
legge ut det som står i linje 28 i index.php fila?
Sitat av haxxor Vis innlegg
legge ut det som står i linje 28 i index.php fila?
Vis hele sitatet...
Det står følgende:

Kode

$row = mysql_fetch_assoc($result);
kunne du lakt ut hele koden?

eller glem det
Sist endret av 4asd13; 8. april 2009 kl. 22:10. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
kunne du lakt ut hele koden?
Vis hele sitatet...

Kode

<?php

$conn = mysql_connect("localhost","root");
mysql_select_db("trening",$conn);

?>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Blogtastic</title>
<link href="style/style_index.css" rel="stylesheet" type="text/css" />
</head><!--THIS IS THE WEBPAGE BODY -->



<body>
<div id="header">
  <div id="holder">
    <div align="center">
      <h1>BARE TEST OG SLIT</h1>

      <div id="nav">Home Categories Login</div>
    </div>
  </div>
</div> 

<?php

<?php
//

$sql = "SELECT entries.*, categories.cat FROM entries, categories
WHERE entries.cat_id = categories.id
ORDER BY dateposted DESC
LIMIT 1;";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result); // linje 28

?>


</body>
</html>
<?php mysql_close($conn); ?>
Sist endret av Donquijote; 8. april 2009 kl. 22:12.
$result er sikkert null fordi SQL-spørringen ikke returnerer noen rader. Sjekk for null?
Må du ikke inkludere MYSQL på noe vis? Eller må man ikke inkludere ting i PHP?

Evt sjekke for null som ymgve nevner?
Sitat av ymgve Vis innlegg
$result er sikkert null fordi SQL-spørringen ikke returnerer noen rader. Sjekk for null?
Vis hele sitatet...
Beklager, hvorda sjekker jeg for null ? (nokså ny i php, jeg).
Lite kontroversiell
ticks's Avatar
Det betyr at linja querien ikke blir gjennomført slik den skal. Enten er du ikke tilkoblet databasen, eller så er det syntaksfeil i SQL-querien din.

Bytt ut linja med

Kode

$result = mysql_query($sql) or die(mysql_error());
og fortell oss hva du får vite. Det er alltid lurt å legge inn slik debuggingmuligheter i koden din. Mye lettere å se hvor ting går galt
Sist endret av ticks; 8. april 2009 kl. 22:15.
Siden han ikke har disablet errors med @ tipper jeg at spørringen går OK.

Kode

require("header.php"); 

$sql = "SELECT entries.*, categories.cat FROM entries, categories 
WHERE entries.cat_id = categories.id 
ORDER BY dateposted DESC 
LIMIT 1;"; 
$result = mysql_query($sql);
if ($result === null)
    die("Ingen rader returnert");
$row = mysql_fetch_assoc($result); 

require("footer.php");
Sitat av ticks Vis innlegg
Det betyr at linja querien ikke blir gjennomført slik den skal. Enten er du ikke tilkoblet databasen, eller så er det syntaksfeil i SQL-querien din.

Bytt ut linja med

Kode

$result = mysql_query($sql) or die(mysql_error());
og fortell oss hva du får vite. Det er alltid lurt å legge inn slik debuggingmuligheter i koden din. Mye lettere å se hvor ting går galt
Vis hele sitatet...
Fikk følgende resultat:
No database selected
Vis hele sitatet...
Sjekka ut phpMyAdmin, og la merke til at jeg hadde glemt et bokstav i navnet til databasen. Jeg takker deg ticks: Tusen takk. Nå skal jeg hele tiden legge slikt inne i koden for å få bedre tilbakemeldinger.

Tusen hjertelig takk alle sammen og ticks.
Sist endret av Donquijote; 8. april 2009 kl. 22:19.

Kode

$conn = mysql_connect("localhost","root");
endre $conn til $sql muligens? du bruker jo ikke $conn for og koble deg til nå?
Err sant, vi er jo blinde

Du må endre $conn til $sql, så kan du kjøre queries osv med den
Lite kontroversiell
ticks's Avatar
Sitat av flexd Vis innlegg
Err sant, vi er jo blinde

Du må endre $conn til $sql, så kan du kjøre queries osv med den
Vis hele sitatet...
Hæ? Pointeren til SQL-tilkoblinga er jo $conn. $sql er variabelen som holder spørringen...
Sitat av flexd Vis innlegg
Err sant, vi er jo blinde

Du må endre $conn til $sql, så kan du kjøre queries osv med den
Vis hele sitatet...
Men jeg bruker jo ikke $conn videre for å spesifisere tilkoblingen. Jeg mener:

$result = mysql_query($sql,$conn);
Vis hele sitatet...
Det er jo ingen mulighet for feil her, ettersom jeg ikke spesifiserer videre $conn, og $sql er jo bare en variablel som jeg bruker inn på query. Jeg forstår ikke helt hva dere mener her! Men jeg sjekka koden tre ganger, og finner ikke noen feil med $conn og $sql.
Lite kontroversiell
ticks's Avatar
Det er ingen feil med bruken din av $sql og $conn.
Sorry, jeg syntes PHP kode er utrolig forvirrende

Du kan jo gjøre sånn som det er vist i eksempelet på PHP.net?

Kode

<?php
// This could be supplied by a user, for example
$firstname = 'fred';
$lastname  = 'fox';

// Formulate Query
// This is the best way to perform a SQL query
// For more examples, see mysql_real_escape_string()
$query = sprintf("SELECT firstname, lastname, address, age FROM friends WHERE firstname='%s' AND lastname='%s'",
    mysql_real_escape_string($firstname),
    mysql_real_escape_string($lastname));

// Perform Query
$result = mysql_query($query);

// Check result
// This shows the actual query sent to MySQL, and the error. Useful for debugging.
if (!$result) {
    $message  = 'Invalid query: ' . mysql_error() . "\n";
    $message .= 'Whole query: ' . $query;
    die($message);
}

// Use result
// Attempting to print $result won't allow access to information in the resource
// One of the mysql result functions must be used
// See also mysql_result(), mysql_fetch_array(), mysql_fetch_row(), etc.
while ($row = mysql_fetch_assoc($result)) {
    echo $row['firstname'];
    echo $row['lastname'];
    echo $row['address'];
    echo $row['age'];
}

// Free the resources associated with the result set
// This is done automatically at the end of the script
mysql_free_result($result);
?>
Sist endret av flexd; 8. april 2009 kl. 22:29.
Sitat av ticks Vis innlegg
Det er ingen feil med bruken din av $sql og $conn.
Vis hele sitatet...
Ordna misstavingen i mysql_select_db, og det fungerte flott nå.
Tusen takk igjen.
$sql = "SELECT entries.*, categories.cat FROM entries, categories
WHERE entries.cat_id = categories.id
ORDER BY dateposted DESC
LIMIT 1;";

hvorfor har du ; etter LIMIT 1?
Sitat av Janpfo Vis innlegg
$sql = "SELECT entries.*, categories.cat FROM entries, categories
WHERE entries.cat_id = categories.id
ORDER BY dateposted DESC
LIMIT 1;";

hvorfor har du ; etter LIMIT 1?
Vis hele sitatet...
Jeg vil bare vise et enkelt resultat vel ?
Du trenger uansett ikke semikolon etter SQL-spørringen.
Sitat av s1gh Vis innlegg
Du trenger uansett ikke semikolon etter SQL-spørringen.
Vis hele sitatet...
Å ? Tusen takk, skal få orden på det straks.
Du ska jo ikke ha ; etter 1? Du skal ha det når du er ferdig med php variablen
Sitat av Janpfo Vis innlegg
Du ska jo ikke ha ; etter 1? Du skal ha det når du er ferdig med php variablen
Vis hele sitatet...
Ja, selvfølgelig, men det er lov i mysql, tror jeg.
Tviler, ihvertfall slik jeg har lært det...
Så vidt jeg vet er det lov, da den avslutter spørringen. Hvis du skal kjøre flere spørringer kan man da skrive feks. "SELECT ...; INSERT ...;".
Sitat av Janpfo Vis innlegg
Tviler, ihvertfall slik jeg har lært det...
Vis hele sitatet...
Men det gikk helt fint, da jeg ikke fjernet den. Alt fungerte, det samme når jeg fjerna den !
Sitat av sFilez Vis innlegg
Så vidt jeg vet er det lov, da den avslutter spørringen. Hvis du skal kjøre flere spørringer kan man da skrive feks. "SELECT ...; INSERT ...;".
Vis hele sitatet...
Dette fungerer ikke med PHP. Kun i phpMyAdmin.

Er syntaxen på spørringen riktig? Må man ikke bruke JOIN om man skal synkronisere to eller flere tabeller?

Kode

SELECT entries.*, categories.cat FROM entries
INNER JOIN categories ON entries.cat_id = categories.id 
ORDER BY dateposted DESC 
LIMIT 1