Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: MySQL apua

Teknkik [08.08.2010 23:39:55]

#

<?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..

trilog [08.08.2010 23:58:46]

#

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.

Triton [09.08.2010 00:04:59]

#

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).

Teknkik [09.08.2010 00:17:17]

#

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 :)

pistemies [09.08.2010 13:52:52]

#

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

Triton [09.08.2010 16:33:58]

#

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.

Teknkik [09.08.2010 17:40:10]

#

Jooh, asia ratkaistu. Vika tosiaan oli siinä, että en valinnut kantaa ollenkaan..
Kiitos kaikille rikkaista esimerkeistä tälläsaralla :)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta