| | |
Not getting information from the database
Please support our PHP advertiser: PostgreSQL or MySQL? Compare and contrast the two most popular open source databases
![]() |
•
•
Join Date: Oct 2006
Posts: 90
Reputation:
Solved Threads: 0
Hi Guys,
I'm trying to create a webpage where it's meant to get some information which i put in the database and then show in the webpage but it's not getting the information. Could you please take a look at my code and tell me if there is a problem somewhere.. Thanks
class_dao.php
I'm trying to create a webpage where it's meant to get some information which i put in the database and then show in the webpage but it's not getting the information. Could you please take a look at my code and tell me if there is a problem somewhere.. Thanks
class_dao.php
php Syntax (Toggle Plain Text)
<?php /** * * Class : DAO * * This data access object is designed for MySQL only * * * * Updates: * 18-07-2007 : improved ->_throw_error() code * 13-07-2005 : added ->build_set() method - returns a string containing an SQL set * 12-07-2005 : added ->get_num_cols() method - returns the number of column names * 12-07-2005 : added ->get_cols() method - returns an array of column names * 16-06-2005 : fixed a bug when using NULL values in do_insert/do_update * 14-06-2005 : added $new_link parameter to ->open() method * 13-06-2005 : added ->do_insert_multi() method for adding multiple rows in one statement * 09-06-2005 : fixed potential insert-id bug * 15-10-2004 : new ->fetch_assoc() method - gets the query as an associative array * of the form: array ( row1.field1 => row1.field2, ... ) * 31-09-2004 : Fixed multi-database usage (stops connection clashing) * */ class DAO { // Public Vars // Private Vars private $_host = ''; // DB Connection info private $_user = ''; private $_password = ''; private $_database = ''; private $_persistent = false; private $_conn = null; // DB Connection object private $_result_set = null; // Contains the result set (temporarily) private $_result_cols = null; // Array of columns for the result set private $_last_sql = null; // Last query run private $_result = null; // Query results, as array of row objects private $_output_type = 'ARRAY_A'; // 'ARRAY_A': Associative Array : $results[row]['field'] // 'ARRAY_N': Numeric Array : $results[row][col] // 'ARRAY_B': Assoc + Numeric Array : use $results[row]['field'] or $results[row][col] private $_output_type_int = MYSQL_ASSOC; // MYSQL_ASSOC, MYSQL_BOTH, MYSQL_NUM private $_insert_id = null; // Last inserted id (on auto-increment columns) private $_num_cols = null; private $_num_rows = null; private $_num_affected = null; private $_debug = false; // debug mode (default: off) private $_last_error = null; /** * CONSTRUCTOR * Set database connection strings * @param string $host * @param string $user * @param string $password * @param string $database * @param boolean $persistent */ function DAO($host, $user, $password, $database, $persistent = false) { $this->_host = $host; $this->_user = $user; $this->_password = $password; $this->_database = $database; $this->_persistent = $persistent; } // /DAO() /* * ================================================================================ * Public Methods * ================================================================================ */ /** * Open database connection * @param boolean $new_link block reusing an existing database connection when the same server/username/password are used * @return boolean */ function open($new_link = true) { if (is_null($this->_conn)) { if ($this->_persistent) { $func = 'mysql_pconnect'; } else { $func = 'mysql_connect'; } if ($this->_debug) { $this->_conn = @$func($this->_host, $this->_user, $this->_password, $new_link) or $this->_throw_error('Connecting to server'); @mysql_select_db($this->_database, $this->_conn) or $this->_throw_error('Selecting Database'); } else { $this->_conn = @$func($this->_host, $this->_user, $this->_password, $new_link); if(@!mysql_select_db($this->_database, $this->_conn)) { return false; } } } return true; } // /->open() /** * Close database connection * @return object */ function close() { $this->flush(); return ( @mysql_close($this->_conn) ); } // /->close() /** * Clear results and reset result vars */ function flush() { $this->_result = null; $this->_num_rows = null; $this->_num_affected = null; $this->_insert_id = null; } // /->flush() /** * Execute the SQL query, and ignore results (ie, not a SELECT) * Sets affected rows (ie could be DELETE/INSERT/REPLACE/UPDATE) * Sets inserted id if query is INSERT/REPLACE (checks first word of query) * @param string $sql * @return boolean */ function execute($sql) { $this->flush(); $this->open(); $this->_last_sql = trim( $sql ); // Save query if ($this->_debug) { $this->_result_set = mysql_query($sql, $this->_conn) or $this->_throw_error('Executing SQL'); } else { $this->_result_set = @mysql_query($sql, $this->_conn); } if ($this->_result_set) { $this->_num_affected = mysql_affected_rows($this->_conn); if ( preg_match("/^\\s*(insert|replace) /i", $sql) ) { $this->_insert_id = mysql_insert_id($this->_conn); } if ($this->_num_affected) { return true; } else { return false; } } else { return false; } }// /->execute() /** * Get results of the given query * @param string $sql * @return object */ function fetch($sql = null) { // If there is an SQL query, get its results instead.. if ( $sql ) { $this->_process_query($sql); } return $this->_result; } // /->fetch() /** * Get a single row (of the given query or cache) * Row indexes are 0-based * @param string $sql * @param integer $y * @return object */ function fetch_row($sql = null, $y = 0) { // If there is an SQL query, get its results instead.. if ( $sql ) { $this->_process_query($sql); } return (isset($this->_result)) ? $this->_result[$y] : null; } // /->fetch_row() /** * Get a single column as a numeric array * column indexes are 0-based * @param string $sql * @param integer $x * @return array */ function fetch_col($sql = null, $x = 0) { // If there is an SQL query, get its results instead.. if ( $sql ) { $this->_process_query($sql); } $new_array = null; // Extract the column value if ($this->_num_rows>0) { for ( $i=0; $i<$this->_num_rows; $i++ ) { $new_array[$i] = $this->fetch_value(null,$x,$i); } } return $new_array; } // /->fetch_col() /** * Get a single value from the result set * column/row indexes are 0-based * An empty string ('') or no value, will return null * @param string $sql * @param integer $x * @param integer $y * @return integer */ function fetch_value($sql = null, $x = 0, $y = 0) { // If there is an SQL query, get its results instead.. if ( $sql ) { $this->_process_query($sql); } // Extract value using x,y vals if ( $this->_result[$y] ) { $values = array_values($this->_result[$y]); } // If there is a value return it, else return null return ( isset($values[$x]) && $values[$x]!=='') ? $values[$x] : null; } // /->fetch_value() /** * Get an associative array ( field1-value => field2-value ) from the result set * If you retrieve more than 2 fields, you will get an associative array of row-arrays * e.g. field1-value => array ( field2 => field2-value, field3 => field3-value, ... ), ... * @param string $sql * @return array */ function fetch_assoc($sql = null) { // Need to be in Numeric+Assoc Array mode, so set it $original_output_mode = $this->get_output_mode(); $this->set_output($output = 'ARRAY_B'); // Fetch the new result set $this->_process_query($sql); // Reset mode to what it was before $this->set_output($original_output_mode); $new_array = null; if ($this->_num_rows>0) { if ($this->get_num_cols()==2) { // Convert rows to simple associative array for ( $i=0; $i<$this->_num_rows; $i++ ) { $new_array["{$this->_result[$i][0]}"] = $this->_result[$i][1]; } } else { // Convert rows to associative array of arrays for ( $i=0; $i<$this->_num_rows; $i++ ) { $row_array = null; for ( $j=1; $j<$this->_num_cols; $j++ ) { $row_array[$this->_result_cols["$j"]] = $this->_result[$i][$j]; } $new_array["{$this->_result[$i][0]}"] = $row_array; } } } return $new_array; }// /->fetch_assoc() /** * Execute the insert query in $sql, using the fields in $fields * auto-slashes the given fields * @param string $sql string of the form 'INSERT INTO tbl_name ({fields}) VALUES ({values}) ' * @param array $fields array ( fieldname1 => ???, fieldname2 => ???, ... ) */ function do_insert($sql, $fields) { $fields_str = implode(',', (array) array_keys($fields) ); $values = array(); foreach ($fields as $k => $v) { $values[] = $this->_prepare_field_value($v); } $values_str = implode(',',$values); $sql = str_replace('{fields}',$fields_str,$sql); $sql = str_replace('{values}',$values_str,$sql); return $this->execute($sql); } // /->do_insert() /** * Execute the insert query in $sql, using multiple VALUES statements as given in $fields * Auto-slashes the given fields * * NOTE : Unlike ->do_insert, the $fields array is an array[0..n] of assoc-arrays * NOTE : Only the last insert-id will be available from ->get_insert_id() following execution * * @param string $sql of the form, 'INSERT INTO tbl_name ({fields}) VALUES {values} * @param array $fields array[0..n] of array ( fieldname1 -> ???, fieldname2 => ???, ... ) * @return object */ function do_insert_multi($sql, $fields) { if (is_array($fields)) { $fields_str = implode(',', array_keys($fields[0]) ); $value_row = null; foreach ($fields as $i => $row) { $value_row["$i"] = array (); foreach($row as $k => $v) { $value_row["$i"][] = $this->_prepare_field_value($v); } $value_row["$i"] = '('. implode(',',$value_row["$i"]) .')'; } $values_str = implode(',',$value_row); $sql = str_replace('{fields}',$fields_str,$sql); $sql = str_replace('{values}',$values_str,$sql); return $this->execute($sql); } else { return null; } }// /->do_insert_multi() /** * Execute the update query in $sql, setting the fields in $fields * Auto-slashes the given fields * @param string $sql sql query of the form 'UPDATE tbl_name SET {fields} WHERE xxx=yyy' * @param array $fields of fields and values to set - of the form array ( fieldname1 => ???, fieldname2 => ???, ... ) * @return mixed */ function do_update($sql, $fields) { $set_str = ''; $fields_count = count($fields); $i=1; foreach ($fields AS $k=>$v) { $set_str .= " $k=". $this->_prepare_field_value($v); if ($i<$fields_count) { $set_str .= ','; } ++$i; } $sql = str_replace('{fields}',$set_str,$sql); return $this->execute($sql); } // /->do_update() /** * Builds filter clause of the form (aaa='bbb' OR aaa='ccc' OR aaa='ddd' ... ) * * @param string $field_name the field name being checked (aaa in example above) * @param array/value $filter_values the values to compare against. * @param string $logical_operator the operator to use to concatenate the filters (AND, OR, XOR) * @return string */ function build_filter($field_name, $filter_values, $logical_operator = 'OR') { $filter_values = (array) $filter_values; // cast values to array (in case it was only passed one) $filter_clause = '('; $w_count = count($filter_values); $i = 1; foreach($filter_values as $k => $v) { $v = $this->escape_str($v); $filter_clause .= "$field_name=". $this->_prepare_field_value($v); if ($i<$w_count) { $filter_clause .= " $logical_operator "; } $i++; } $filter_clause .= ')'; return $filter_clause; }// ->build_filter() /** * Builds an SQL set of the form ('aaa','bbb','ccc') for use with IN operators * * @param array/value $value_array array of values to include in the set * @return string */ function build_set($value_array) { $value_array = array_map('addslashes',(array) $value_array); return '(\''. implode('\',\'',$value_array) .'\')'; }// /->build_set() /* * -------------------------------------------------------------------------------- * Accessor Methods * -------------------------------------------------------------------------------- */ // GET_xxx functions /** * Return an array of columns names from the last query * @return boolean */ function get_cols() { return (is_array($this->_result_cols)) ? $this->_result_cols : null ; } /** * Return the number of columns from the last query * @return integer */ function get_num_cols() { return $this->_num_cols; } /** * Return the number of rows from the last query * @return integer */ function get_num_rows() { return $this->_num_rows; } /** * Return the number of affected rows from the last query (insert/replace/update) * @return integer */ function get_num_affected() { return $this->_num_affected; } /** * Return last inserted id (for auto-increment columns) * @return integer */ function get_insert_id() { return $this->_insert_id; } /** * Return last run query * @return string */ function get_last_sql() { return $this->_last_sql; } /** * Get last mysql error */ function get_last_error() { mysql_error($this->_conn); } /** * Get output mode * @return mixed */ function get_output_mode() { return $this->_output_type; } /* * -------------------------------------------------------------------------------- * SET_xxx functions * -------------------------------------------------------------------------------- */ /** * Set debug mode * When in debug mode, detailed error reports are echoed * @param boolean */ function set_debug($on) { $this->_debug = $on; } /** * Set default output mode for results array * @param string $output * @return boolean */ function set_output($output = 'ARRAY_A') { switch ($output) { case 'ARRAY_A' : $this->_output_type_int = MYSQL_ASSOC; $this->_output_type = $output; return true; break; // ---------------------------------------- case 'ARRAY_B' : $this->_output_type_int = MYSQL_BOTH; $this->_output_type = $output; return true; break; // ---------------------------------------- case 'ARRAY_N' : $this->_output_type_int = MYSQL_NUM; $this->_output_type = $output; return true; break; // ---------------------------------------- default : return false; break; } }// /->set_output() /** * Escape character string * @param string $str * @return string */ function escape_str($str) { return mysql_escape_string(stripslashes($str)); } /* * ================================================================================ * Private Methods * ================================================================================ */ /** * Execute the SQL and collect the result set * @param string $sql * @return boolean */ function _process_query($sql) { $this->flush(); $this->open(); $this->_last_sql = trim( $sql ); // Save query if ($this->_debug) { $this->_result_set = mysql_query($sql, $this->_conn) or $this->_throw_error('Querying database'); } else { $this->_result_set = @mysql_query($sql, $this->_conn); } // If got a result set.. if ($this->_result_set) { // number of columns returned $this->_num_cols = mysql_num_fields($this->_result_set); // Store column names as an array $i=0; $this->_result_cols = array(); while ($i < $this->_num_cols) { $field = @mysql_fetch_field($this->_result_set,$i); $this->_result_cols[] = $field->name; $i++; } // Store the results as an array of row objects while ( $row = @mysql_fetch_array($this->_result_set,$this->_output_type_int) ) { $this->_result[] = $row; } // number of rows returned $this->_num_rows = count($this->_result); // Free the actual result set @mysql_free_result($this->_result_set); // If there were results.. return true return ($this->_num_rows>=1); } else { $this->_num_cols = 0; $this->_num_rows = 0; $this->_result_cols = null; return false; } } // /->process_query() /** * function to capture the thrown error and out put to the screen * @param string $err_msg * @return boolean */ function _throw_error($err_msg) { if ($this->_conn) { die("<hr />DATABASE ERROR<hr />$err_msg :: ". mysql_error($this->_conn) .'<hr />'. $this->get_last_sql().'<hr />'); } else { die("<hr />DATABASE ERROR<hr />$err_msg :: <NO SERVER><hr />". $this->get_last_sql().'<hr />'); } return false; }// /->_throw_error() /** * Prepare a value for putting into the database * Escapes special characters, checks for NULL, and puts in quotes as necessary * * @param integer $value value to prepare * * @return string en-quoted value, ready for insertion into a database (of the form 'value' or NULL) */ function _prepare_field_value($value) { // NULL values don't need quotes, so if it's null, just return a string containing NULL // Else, return an escaped string containing the value enclosed in quotes return (is_null($value)) ? 'NULL' : '\''. $this->escape_str($value) .'\''; }// /->_prepare_field_value() } // /class: DAO ?>
Please post relevant code only. IE., any code that has changed since the last time it worked. Posting ~1k lines of code then saying "What's wrong" doesn't help. Also, if you are using a class that has been worked on as much as this then the problem most likely lies in your query.
GCS d- s+ a-->? C++(++++) UL+++ P+>+++ L+++ E--- W+++
N+ o K w++(---) O? !M- V PS+>++ PE+ Y+ PGP !t- 5? X- R tv+
b+>++ DI+ D G++>+++ e+ h+>++ r y+
PMs asking for help will not be answered, post on the forums. That's what they're there for.
N+ o K w++(---) O? !M- V PS+>++ PE+ Y+ PGP !t- 5? X- R tv+
b+>++ DI+ D G++>+++ e+ h+>++ r y+
PMs asking for help will not be answered, post on the forums. That's what they're there for.
•
•
Join Date: Oct 2006
Posts: 90
Reputation:
Solved Threads: 0
ok what about this code, i just cut the old one down to this
php Syntax (Toggle Plain Text)
# class DAO { # // Public Vars # # // Private Vars # private $_host = ''; // DB Connection info # private $_user = ''; # private $_password = ''; # private $_database = ''; # private $_persistent = false; # # private $_conn = null; // DB Connection object # # private $_result_set = null; // Contains the result set (temporarily) # private $_result_cols = null; // Array of columns for the result set # # private $_last_sql = null; // Last query run # private $_result = null; // Query results, as array of row objects # # private $_output_type = 'ARRAY_A'; // 'ARRAY_A': Associative Array : $results[row]['field'] # // 'ARRAY_N': Numeric Array : $results[row][col] # // 'ARRAY_B': Assoc + Numeric Array : use $results[row]['field'] or $results[row][col] # # private $_output_type_int = MYSQL_ASSOC; // MYSQL_ASSOC, MYSQL_BOTH, MYSQL_NUM # # private $_insert_id = null; // Last inserted id (on auto-increment columns) # # private $_num_cols = null; # private $_num_rows = null; # private $_num_affected = null; # # private $_debug = false; // debug mode (default: off) # private $_last_error = null; # # # /** # * CONSTRUCTOR # * Set database connection strings # * @param string $host # * @param string $user # * @param string $password # * @param string $database # * @param boolean $persistent # */ # function DAO($host, $user, $password, $database, $persistent = false) { # $this->_host = $host; # $this->_user = $user; # $this->_password = $password; # $this->_database = $database; # $this->_persistent = $persistent; # } // /DAO() # # # /* # * ================================================================================ # * Public Methods # * ================================================================================ # */ # # # /** # * Open database connection # * @param boolean $new_link block reusing an existing database connection when the same server/username/password are used # * @return boolean # */ # function open($new_link = true) { # if (is_null($this->_conn)) { # if ($this->_persistent) { # $func = 'mysql_pconnect'; # } else { # $func = 'mysql_connect'; # } # # if ($this->_debug) { # $this->_conn = @$func($this->_host, $this->_user, $this->_password, $new_link) or $this->_throw_error('Connecting to server'); # @mysql_select_db($this->_database, $this->_conn) or $this->_throw_error('Selecting Database'); # } else { # $this->_conn = @$func($this->_host, $this->_user, $this->_password, $new_link); # if(@!mysql_select_db($this->_database, $this->_conn)) { # return false; # } # } # } # return true; # } // /->open() # # /** # * Close database connection # * @return object # */ # function close() { # $this->flush(); # return ( @mysql_close($this->_conn) ); # } // /->close() # #
Take all of the @ out from in front of the function calls, that is suppressing the errors. You'll be able to see the errors after you remove them.
GCS d- s+ a-->? C++(++++) UL+++ P+>+++ L+++ E--- W+++
N+ o K w++(---) O? !M- V PS+>++ PE+ Y+ PGP !t- 5? X- R tv+
b+>++ DI+ D G++>+++ e+ h+>++ r y+
PMs asking for help will not be answered, post on the forums. That's what they're there for.
N+ o K w++(---) O? !M- V PS+>++ PE+ Y+ PGP !t- 5? X- R tv+
b+>++ DI+ D G++>+++ e+ h+>++ r y+
PMs asking for help will not be answered, post on the forums. That's what they're there for.
Hi dami,
You need to set your connection credentials.
change these lines:
private $_host = ''; // DB Connection info
#
private $_user = '';
#
private $_password = '';
#
private $_database = '';
#
to this:
private $_host = 'localhost';
#
private $_user = 'Your MySQL Username';
#
private $_password = 'Your MySQL Password';
#
private $_database = 'The name of the database you are trying to connect to';
#
Without this information, PHP can't connect to the database
You need to set your connection credentials.
change these lines:
private $_host = ''; // DB Connection info
#
private $_user = '';
#
private $_password = '';
#
private $_database = '';
#
to this:
private $_host = 'localhost';
#
private $_user = 'Your MySQL Username';
#
private $_password = 'Your MySQL Password';
#
private $_database = 'The name of the database you are trying to connect to';
#
Without this information, PHP can't connect to the database
Technology is just a tool. In terms of getting the kids working together and motivating them, the teacher is the most important. richie513
Richie, those lines of code are from a class. They are most likely being initialized in the constructor.
GCS d- s+ a-->? C++(++++) UL+++ P+>+++ L+++ E--- W+++
N+ o K w++(---) O? !M- V PS+>++ PE+ Y+ PGP !t- 5? X- R tv+
b+>++ DI+ D G++>+++ e+ h+>++ r y+
PMs asking for help will not be answered, post on the forums. That's what they're there for.
N+ o K w++(---) O? !M- V PS+>++ PE+ Y+ PGP !t- 5? X- R tv+
b+>++ DI+ D G++>+++ e+ h+>++ r y+
PMs asking for help will not be answered, post on the forums. That's what they're there for.
•
•
Join Date: Nov 2007
Posts: 86
Reputation:
Solved Threads: 6
um,
Up top you have
I'm assuming that your database information isn't even being called at all in any of your functions because you have used $_ in your declaration of the variables, but are trying to call it a different way later on?
Of course, this could just be something that I am not familiar with.
Sage
PHP Syntax (Toggle Plain Text)
$this->_host = $host; $this->_user = $user; $this->_password = $password; $this->_database = $database; $this->_persistent = $persistent;
Up top you have
PHP Syntax (Toggle Plain Text)
private $_user = ''; private $_password = ''; private $_database = ''; private $_persistent = false;
I'm assuming that your database information isn't even being called at all in any of your functions because you have used $_ in your declaration of the variables, but are trying to call it a different way later on?
Of course, this could just be something that I am not familiar with.
Sage
![]() |
Similar Threads
- Retrieve Information from Database & Display into ASP.NET Web Controls Textbox (ASP.NET)
- Writing to an Access Database (Visual Basic 4 / 5 / 6)
- submiting info into a database for retrieval! (PHP)
- Error message when using database chart wizard (Visual Basic 4 / 5 / 6)
- help pleaseee! probl with username and passwd when updating mysql database (MySQL)
- Web Form & Database!!! PLEASE (MS SQL)
- php wont submit data into the database (PHP)
- Error getting forms to send information (PHP)
- How to incorporate Database into C++ ? (C++)
Other Threads in the PHP Forum
- Previous Thread: Checkbox Arrays ARGH!!
- Next Thread: Please check for errors
| Thread Tools | Search this Thread |
advanced alerts apache api archive array autosuggest beginner binary broken cakephp checkbox class clients cms code cron curl database date datepart display dynamic echo email emptydisplayvalue eregi error execute explodefunction file files folder form forms function functions google hack head href htaccess html if...loop image include insert ip javasciptvalidation javascript joomla keywords library limit link login mail matching menu mlm multiple mysql number object oop password paypal pdf php phpincludeissue query radio random recursive remote script search searchbox server sessions shot smarty source space speed sql syntax system table tutorial update upload url validator variable vbulletin video web website youtube






