<?php include("settings.php"); function get_blog_content($host, $user, $pass, $id) { $connect = mysql_connect($host, $user, $pass) or die("Coult not connect to MySQL-server"); $get = "SELECT story FROM storys WHERE id = ".$id; $story = mysql_query($get, $connect); $story = mysql_fetch_row($story); echo $story; mysql_close($connect); } get_blog_content($host, $user, $password, 1); echo "lol"; ?>
tuollanen, ei wörki ei.. tuo echo "lol"; on tuossa vaan että näkis jos koko koodin suoritus jää pois (syntax error tms, mutta error_reportting o none, enkä oo saanu päälle).. settings.php:ssa määritellään $host $user ja $password..
Syntax error tuossa ainakin on, kuten varmaan huomaat itsekin koodivärityksistä. Tulostele vaikka MySQL:n virheviestejä funktiolla mysql_error
.
Teknkik kirjoitti:
syntax error tms, mutta error_reportting o none, enkä oo saanu päälle
Aika tuskaista koodausta siis luvassa. Kannattaa yrittää säätää edes jonkinlaiset virheviesit päälle, koska isomman koodin kanssa menee muuten tuhottomasti aikaa "käsin" vikoja etsien.
Kokeile vaikka seuraavaa koodia:
<?php ini_set("display_errors", 1); error_reporting(E_ALL | E_NOTICE);
Pitäisi toimia, ellei palvelinta ole konfiguroitu aivan hölmösti.
Itse en välttämättä sisällyttäisi kantaan yhteydenottamista tuohon funktioon, vaan pitäisin sen tuon ulkopuolella. Samoin myös palauttaisin kaikki blogin tiedot assosiatiivisena taulukkona... Tein seuraavan skriptin, joten en ole kokeillut, mutta periaatteessa sen pitäisi toimia:
<?php function get_blog_message($message_id) { $message_id = mysql_real_escape_string($message_id); $sql = "SELECT * FROM storys WHERE id = '{$message_id}'"; $query = mysql_query($sql); if (mysql_num_rows($query) == 1) return mysql_fetch_assoc($query); else return 0; } mysql_connect($host, $user, $pass); mysql_select_db($db_name); $message = get_blog_message(intval($_GET['id'])); echo $message['story']; ?>
edit. Todennäköisesti oman skriptisi virhe aiheutuu siitä, ettet valitse tietokantaan missään (jos siis tota die-virhettä ei oteta huomioon).
Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in /home/teknkik/public_html/easyblog/mysql.php on line 9
tuollasta antaapi nyt.. kiitos tuosta neuvosta miten saan error_reporting on ;D
edit: Ja nyt toimii :)
En laittaisi tulostamista samaan funktioon. Pitäisin mysql-yhteyden avaamisen ja sulkemisen siitä erillään.
Minulla on ollut tällainen, jota käytän paikoissa, joissa on php4. Tunnukset olen määritellyt tässä tapauksessa vakioiksi.
<?php class Mysql{ var $select; var $result; var $database; function conn(){ return($this->select = mysql_connect(MYSQL_SERVER,MYSQL_USERNAME,MYSQL_PASSWORD) or die (mysql_error())); } function db(){ return($this->database = mysql_select_db(DATABASE) or die (mysql_error())); } function end(){ return(mysql_close()); } } ?>
Tämä ei siis ratkaisee tuota tulostusongelmaa, esimerkkinä vaan :D
Jos tähän oliot halutaan mukaan, niin sitten kannattaa samantien ottaa PDO käyttöön... ja periaatteessa tuo edellinenkin esimerkki oltaisiin voitu tehdä PHP5:n oliomallin mukaisesti.
Jooh, asia ratkaistu. Vika tosiaan oli siinä, että en valinnut kantaa ollenkaan..
Kiitos kaikille rikkaista esimerkeistä tälläsaralla :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.