hallo ik probeer een laatste bericht die nog niet gelezen is uit mijn database te halen maar ik kom er niet uit

ik heb een tut gelezen hier op php hulp maar die doet mij niet veel beter
[code]
<?php

$sql = mysql_query("SELECT * FROM `[messages]` WHERE `to`='{$data->login}' AND message = "" AND`read`='0'");
$row = mysql_num_rows($sql);


echo 'bericht: '.$row['message'].';
?>[code]
dit is wat ik heb

db tabellen
id IP forwardedFor time from to subject message read inbox outbox avatar
Thymen akker op 21/05/2012 16:16:06
AND message = ""

Dus met andere woorden, je selecteert alleen de berichten waarvan de message leeg is.... en vervolgens print je de message. Wat denk je zelf dat je op je scherm krijgt (hint: het zal niet veel tekst zijn).

hoe krijg ik het dan ik dacht dat als je AND message = "" leeg laat dat hij het dan weer geeft

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/XXX/domains/XXXX/public_html/new2/messa ook krijg ik die fout
laat maar
Verder zou ik ook eens gaan kijken naar het begrip "reserved words" in MySQL. 'from', 'to' en 'read' zijn dat namelijk allemaal en zou je dus NIET moeten gebruiken als kolomnamen:
http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

P.S. backticks gebruiken om die toch wel te kunnen gebruiken is een zeer slecht lap middel, niet doen dus.

[size=xsmall]Toevoeging op 21/05/2012 16:25:42:[/size]

Thymen akker op 21/05/2012 16:22:22

hoe krijg ik het dan ik dacht dat als je AND message = "" leeg laat dat hij het dan weer geeft

Als je een lege string echo'd krijg je een lege string te zien, wat anders?

ik heb even gezocht op i-net en vond dit: (heb hem even veranderd..

<?php


$qry = "SELECT
           message,
           subject,
           read,
		   to
        FROM
            [messages]
            ORDER BY `time`";


# Als query is gelukt
if( $sql = mysql_query( $qry ) )
{
    # Als er items zijn
    if( mysql_num_rows( $sql ) > 0 )
    {
        while( $rec = mysql_fetch_assoc( $sql ) )
        {
            # Data weergeven
        }
    }
    else
    {
        echo 'Er zijn geen items gevonden.';
    }
}
else
{
    echo 'Er is een fout opgetreden met de database.';
}


	  
?>


maar nu zegt hij Er is een fout opgetreden met de database.
config staat nog steeds goed
Je hebt mijn post over reserved words zeker niet gelezen....
ja wel maar daar begreep ik al helenmaal niets van
from, to en read kan je niet als kolomnamen gebruiken. Zo simpel. Daar moet je dus gewoon andere namen voor bedenken. Voor de complete lijst van woorden die je niet kan gebruiken, check de link.
$qry = "SELECT
message,
subject,
read,
to
FROM
[messages]
ORDER BY `time`";

ik doe nu tog:
"SELECTEER" message,subject,read,to, "VAN tabel" [messages] SORTEER OP tijd ?

If you want to check if you have named your table or column with a reserved word here is a script/process that will get you there:

er staat "TO" in maar to is het tabelletje waar het bericht is heen gegaan


--
-- Tabelstructuur voor tabel `[messages]`
--

CREATE TABLE IF NOT EXISTS `[messages]` (
  `id` int(9) NOT NULL AUTO_INCREMENT,
  `IP` varchar(32) NOT NULL DEFAULT '',
  `forwardedFor` varchar(32) DEFAULT NULL,
  `time` datetime DEFAULT NULL,
  `from` varchar(16) DEFAULT NULL,
  `to` varchar(16) DEFAULT NULL,
  `subject` varchar(50) NOT NULL DEFAULT '',
  `message` text NOT NULL,
  `read` int(1) NOT NULL DEFAULT '0',
  `inbox` int(1) DEFAULT '1',
  `outbox` int(1) DEFAULT '1',
  `avatar` varchar(64) NOT NULL DEFAULT 'avatar.jpg',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=681 ;
Erwin H op 21/05/2012 16:42:43

from, to en read kan je niet als kolomnamen gebruiken.

Ik zie to en read nog steeds staan in je query, dus zolang je niets eraan doet gaat het niet werken....

Reageren