Permalänk
Medlem

PHP-/SQL-fel

Sitter och leker runt med en sida jag jobbat på ett tag och höll på att ändra lite kod för att automatisera hämtandet av data lite bättre, så den hämtar dem 4 nyaste artiklarna, den ska dessutom ordna med id i sjunkande ordning. Fattar bara inte riktigt vart jag gör fel för koden skapar det grafiska men ingen data hämtas.

PHP skript i index.php:

<?php include 'required/connection.php'; $query = "SELECT * FROM article ORDER BY id DESC LIMIT 4;"; $result = mysql_query($query) or die ('<div id="warning"><p>unable to query</p></div>'); echo '<div class="gridsystem">'; while($row = mysql_fetch_array($result)) { echo '<div class="gridsystem_object">'; echo '<img src="' . $article["image"] . '">'; echo '<div class="gridsystem_object_text">' . $result["content"] . '</div>'; echo '</div>'; } echo '</div>'; ?>

PHP skript för uppkoppling:
uppgifterna för db, dbusr och dbpass är inte visade av skäl för att dem är aktiva uppgifter till servern

<?php $db = ''; $dbusr = ''; $dbpass = ''; $dbt = 'article_db'; $conn = mysql_connect($db, $dbusr, $dbpass); mysql_select_db($dbt); ?>

Resultatet av koden blir:

Grafiskt antingen:

Eller:

alltså tomt resultat

Koden är testad med dess css och inget är fel i stilmallen (kollat genom CSS validator också), men jag får inte det resultat jag vill ha som är :

Data finns i tabellen på rätt ställen, med rätt typ av data, inget hokus direkt. Utan enda är att jag inte får tillbaka någon data ifrån anropet,
testat att byta syntaxen till bara SELECT * FROM article men det funkar inte heller.

Meningen med det hela är att hämta 4 artiklar (nyheter) om något som skapats vid något tillfälle (just nu styrt på dess id) som ska visas upp som fyra objekt (täcka en rad av sidan) med detta. I loopen är det tänkt att den ska skriva dem topp 4 nyligen skrivna (styrt som sagt på id just nu).

  • Tjänsten SQL är startad

  • Det går finfint att ansluta

  • Standardporten 3306

  • Styrs via terminal ingen bench

  • Inget problem att ansluta genom något annat program/tjänst till servern

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
Felkod40

Permalänk

Skriv ut mysql_error() så ser vi bättre.

Visa signatur
Permalänk
Medlem
Skrivet av Kebabhyvlarn:

Skriv ut mysql_error() så ser vi bättre.

Felkod: #0: vid : SELECT * FROM article;

Grejen är väl den mest att INGET händer innanför while-syntaxen

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
Felkod40

Permalänk
Medlem

menar du inte att du ska använda mysql_fetch_assoc istället för mysql_fetch_array?

Permalänk
Medlem
Skrivet av freddyfresh:

Felkod: #0: vid : SELECT * FROM article;

Grejen är väl den mest att INGET händer innanför while-syntaxen

Ta bort semikolonet i slutet av queryn.

Sen använder du ju inte $row i nedanstående kod. Och $result är ju inget du ska skriva ut sådär.

while($row = mysql_fetch_array($result)) { echo '<div class="gridsystem_object">'; echo '<img src="' . $article["image"] . '">'; echo '<div class="gridsystem_object_text">' . $result["content"] . '</div>'; echo '</div>'; }

Permalänk
Inaktiv
Skrivet av freddyfresh:

Felkod: #0: vid : SELECT * FROM article;

Grejen är väl den mest att INGET händer innanför while-syntaxen

Vad är det du har i $result om du bara skriver ut den då? Varför använder du inte mysqli, mysql är typ deprecated.

Permalänk
Medlem

$row["image"];
$row["content"];

$article existerar inte

Visa signatur

AW3423DW QD-OLED - Ryzen 5800x - MSI Gaming Trio X 3090 - 64GB 3600@cl16 - Samsung 980 Pro 2TB/WD Black SN850 2TB

Permalänk
Medlem
Skrivet av dannesthlm:

menar du inte att du ska använda mysql_fetch_assoc istället för mysql_fetch_array?

testat det också, därför gick jag och körde array istället för assoc

Skrivet av anon81912:

Vad är det du har i $result om du bara skriver ut den då? Varför använder du inte mysqli, mysql är typ deprecated.

Mjo men funkade inte i mysqli heller, därför jag testade att göra lite av allt, i $result finns bara "Resource id #6"

Skrivet av iXam:

Ta bort semikolonet i slutet av queryn.

Ingen skillnad.

Ändrade enligt förslag men istället nu ett konstant unable to query.

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
Felkod40

Permalänk
Inaktiv

Eftersom du får något konstigt i $result så kanske du skall kolla på hur det ser ut i databasen. Du borde ha mycket mer där om du skall kunna skriva ut något

Permalänk
Medlem

I tabellen "article" existerar kolumnerna "image" och "content"?

Kan du appenda mysql_error() till die() och se vad den kastar för fel.

Visa signatur

AW3423DW QD-OLED - Ryzen 5800x - MSI Gaming Trio X 3090 - 64GB 3600@cl16 - Samsung 980 Pro 2TB/WD Black SN850 2TB

Permalänk
Medlem
Skrivet av anon81912:

Eftersom du får något konstigt i $result så kanske du skall kolla på hur det ser ut i databasen. Du borde ha mycket mer där om du skall kunna skriva ut något

Det som finns i $result är vad som är förväntat enligt hur den används.(http://se.php.mirror.edgebooster.com/manual/en/function.mysql...)

Permalänk
Medlem
Skrivet av anon81912:

Eftersom du får något konstigt i $result så kanske du skall kolla på hur det ser ut i databasen. Du borde ha mycket mer där om du skall kunna skriva ut något

Enda nya felkoden är nu Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in C:\xampp2\htdocs\test.php on line 56

Och jag kör den här koden som jag hade från början nu:

Index:

<?php include 'required/connection.php'; $query = "SELECT * FROM article ORDER BY id DESC LIMIT 4"; $result = mysqli_query($conn, $query) or die ("<div id='warning'><p>unable to query</p></div>"); echo "<div class='gridsystem'>"; while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { echo "<div class='gridsystem_object'>"; echo "<img src=" . $row['image'] . ">"; echo "<div class='gridsystem_object_text'>" . $row['content'] . "</div>"; echo "</div>"; } echo "</div>"; ?>

Dold text

Connection.php

<?php DEFINE ('DB_USER', ''); DEFINE ('DB_PSWD', ''); DEFINE ('DB_HOST', ''); DEFINE ('DB_NAME', 'article_db'); $conn = mysql_connect(DB_HOST, DB_USER, DB_PSWD, DB_NAME); ?>

Dold text

Tog en extra titt på innehållet, ser inget konstigt där.

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
Felkod40

Permalänk
Hedersmedlem

Ett förslag vore också att byta till mysqli, men det är kanske ett annat kapitel.

Som tidigare i tråden, ändrade du

$query = "SELECT * FROM article ORDER BY id DESC LIMIT 4;";

Till

$query = "SELECT * FROM article ORDER BY id DESC LIMIT 4";

Har du tillgång till phpmyadmin eller annat databasverktyg? I så fall brukar det underlätt att köra queries där då det oftast går snabbare att se fel och få ihop allting.

Och, variablarna måste överrensstämma.

while($row = mysql_fetch_array($result)) { echo '<div class="gridsystem_object">'; echo '<img src="' . $row["image"] . '">'; echo '<div class="gridsystem_object_text">' . $row["content"] . '</div>'; echo '</div>'; }

Visa signatur

Dator, MOBO: Asus X99-A, CPU: Intel I7 6800k (3.4GHz), GPU: Geforce PNY 2070 Super, RAM: 4x8GB Corsair Vengeance LPX 2400MHz, OS-HDD: Intel 750 PCIe 400GB, PSU: EVGA SuperNOVA G2 850W

Permalänk
Inaktiv
Skrivet av freddyfresh:

Enda nya felkoden är nu Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in C:\xampp2\htdocs\test.php on line 56

Och jag kör den här koden som jag hade från början nu:

Index:

<?php include 'required/connection.php'; $query = "SELECT * FROM article ORDER BY id DESC LIMIT 4"; $result = mysqli_query($conn, $query) or die ("<div id='warning'><p>unable to query</p></div>"); echo "<div class='gridsystem'>"; while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { echo "<div class='gridsystem_object'>"; echo "<img src=" . $row['image'] . ">"; echo "<div class='gridsystem_object_text'>" . $row['content'] . "</div>"; echo "</div>"; } echo "</div>"; ?>

Dold text

Connection.php

<?php DEFINE ('DB_USER', ''); DEFINE ('DB_PSWD', ''); DEFINE ('DB_HOST', ''); DEFINE ('DB_NAME', 'article_db'); $conn = mysql_connect(DB_HOST, DB_USER, DB_PSWD, DB_NAME); ?>

Dold text

Tog en extra titt på innehållet, ser inget konstigt där.

Du kan inte blanda mysql_* och mysqli_*. Du använder dig av mysql_connect i Connection.php och mysqli_query i Index. Sen skulle jag rekommendera att skippa mysql_* samt mysqli_* och köra på PDO istället.

Permalänk
Medlem
Skrivet av anon150287:

Du kan inte blanda mysql_* och mysqli_*. Du använder dig av mysql_connect i Connection.php och mysqli_query i Index. Sen skulle jag rekommendera att skippa mysql_* samt mysqli_* och köra på PDO istället.

Vill egentligen använda MongoDB men håller mest på att testa nu för att se om det ens fungerade, gick vid ett tillfälle hämta en rubrik ur en artikel.
PDO är jag tyvärr inte bekant med.. Har därför ganska få kunskaper om MySQL

Tack för upplysningen, råkade glömma i:et, åtgärdat men samma fel.

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
Felkod40

Permalänk
Medlem
Skrivet av freddyfresh:

Vill egentligen använda MongoDB men håller mest på att testa nu för att se om det ens fungerade, gick vid ett tillfälle hämta en rubrik ur en artikel.
PDO är jag tyvärr inte bekant med.. Har därför ganska få kunskaper om MySQL

Tack för upplysningen, råkade glömma i:et, åtgärdat men samma fel.

Samma fel som vad?

Visa signatur

AW3423DW QD-OLED - Ryzen 5800x - MSI Gaming Trio X 3090 - 64GB 3600@cl16 - Samsung 980 Pro 2TB/WD Black SN850 2TB

Permalänk

Hej,

Denna del deklarerar väl, oavsiktligt, en boolean.

$result = mysqli_query($conn, $query) or die ("<div id='warning'><p>unable to query</p></div>");

Testa att ta bort "or die(..." och se om det går bättre.

Permalänk
Medlem
Skrivet av WNDS, WNPS:

Hej,

Denna del deklarerar väl, oavsiktligt, en boolean.

$result = mysqli_query($conn, $query) or die ("<div id='warning'><p>unable to query</p></div>");

Testa att ta bort "or die(..." och se om det går bättre.

http://stackoverflow.com/questions/432454/how-does-do-somethi...

Permalänk
Medlem
Skrivet av WNDS, WNPS:

Hej,

Denna del deklarerar väl, oavsiktligt, en boolean.

$result = mysqli_query($conn, $query) or die ("<div id='warning'><p>unable to query</p></div>");

Testa att ta bort "or die(..." och se om det går bättre.

Gav nytt fel: Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in C:\xampp2\htdocs\test.php on line 60

Skrivet av celoz:

Samma fel som vad?

Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in C:\xampp2\htdocs\test.php on line 56

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
Felkod40

Permalänk
Medlem
Skrivet av freddyfresh:

Gav nytt fel: Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in C:\xampp2\htdocs\test.php on line 60

Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in C:\xampp2\htdocs\test.php on line 56

Du använder fortfarandew mysqli_query() när du ska använda mysql_query

Visa signatur

AW3423DW QD-OLED - Ryzen 5800x - MSI Gaming Trio X 3090 - 64GB 3600@cl16 - Samsung 980 Pro 2TB/WD Black SN850 2TB