php-general Digest 18 Dec 2012 06:13:03 -0000 Issue 8068
Topics (messages 319900 through 319905):
Re: Noobie starting to learn OOP for databases needs help
319900 by: Sebastian Krebs
319901 by: Matijn Woudt
319902 by: dealTek
319903 by: David OBrien
319904 by: Sebastian Krebs
319905 by: tamouse mailing lists
Administrivia:
To subscribe to the digest, e-mail:
php-general-digest-subscr...@lists.php.net
To unsubscribe from the digest, e-mail:
php-general-digest-unsubscr...@lists.php.net
To post to the list, e-mail:
php-gene...@lists.php.net
----------------------------------------------------------------------
--- Begin Message ---
2012/12/16 dealTek <deal...@gmail.com>
> Hi all,
>
> Noobie starting to learn oop for databases from here:
>
>
> https://github.com/JeffreyWay/PHP-MySQL-Database-Class/blob/master/MysqlDb.php
>
> I've got lots working but have a few issues:
>
> 1 - after an insert I'd like to get the id of the new record and I'm not
> sure how to get that...
>
> mysql_insert_id (depricated?) or mysqli_insert_id() (I am using mySql 5.3)
>
> not sure where to add this... (most likely in MysqlDb.php but I don't know
> where or how...)
>
Instead of "true" let insert() return the id.
And while looking at your code:
- You wrote in your DocBlocks, that the methods returns a boolean 0 or 1.
Beside that this is wrong (0 or 1 are integers) you return either 'true' or
nothing. You should return 'false' as well.
- Returning a boolean to indicate the success of a method only makes sense,
when "not successful" is a valid case, but I guess when 'delete()' fail it
not be treatened as "normal". You should throw an Exception instead. This
also includes: It's not required, that a method returns something in every
case. If "delete()" for example doesn't have to tell something, it
shouldn't.
>
> http://de.php.net/manual/en/function.mysql-insert-id.php
>
> 2 - how does one do aggrigate select queries like "SELECT SUM(price) FROM
> mytable" ... what I tried seemed to fail...
>
Nothing "seems to fail" ;) Either it fails, or not (or it just doesn't
behave, like expected, what I see as "fail" too). So what happens?
>
>
> And if anyone can point to some good OOP training URL's I'd appreciate it.
>
> Thanks in advance for any assistance...
>
>
>
>
>
>
>
> --
> Thanks,
> Dave - DealTek
> deal...@gmail.com
> [db-12]
>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
--
github.com/KingCrunch
--- End Message ---
--- Begin Message ---
On Sun, Dec 16, 2012 at 4:38 PM, dealTek <deal...@gmail.com> wrote:
> Hi all,
>
> Noobie starting to learn oop for databases from here:
>
>
> https://github.com/JeffreyWay/PHP-MySQL-Database-Class/blob/master/MysqlDb.php
>
> I've got lots working but have a few issues:
>
> 1 - after an insert I'd like to get the id of the new record and I'm not
> sure how to get that...
>
> mysql_insert_id (depricated?) or mysqli_insert_id() (I am using mySql 5.3)
>
> not sure where to add this... (most likely in MysqlDb.php but I don't know
> where or how...)
>
> http://de.php.net/manual/en/function.mysql-insert-id.php
try SELECT LAST_INSERT_ID();
it should give you the id of the last inserted row (on a connection basis).
>
>
> 2 - how does one do aggrigate select queries like "SELECT SUM(price) FROM
> mytable" ... what I tried seemed to fail...
>
>
Please show is exact query that failes, and give the error it returns.
>
> And if anyone can point to some good OOP training URL's I'd appreciate it.
>
> Thanks in advance for any assistance...
>
>
Note sure what OOP has to do with MySQL, but I'd say google for PHP OOP and
there's plenty of good stuff available.
- Matijn
--- End Message ---
--- Begin Message ---
On Dec 16, 2012, at 10:08 AM, Sebastian Krebs <krebs....@gmail.com> wrote:
> 2012/12/16 dealTek <deal...@gmail.com>
>
>> Hi all,
>>
>> Noobie starting to learn oop for databases from here:
>>
>>
>> https://github.com/JeffreyWay/PHP-MySQL-Database-Class/blob/master/MysqlDb.php
>>
>> I've got lots working but have a few issues:
>>
>> 1 - after an insert I'd like to get the id of the new record and I'm not
>> sure how to get that...
>>
>> mysql_insert_id (depricated?) or mysqli_insert_id() (I am using mySql 5.3)
>>
>> not sure where to add this... (most likely in MysqlDb.php but I don't know
>> where or how...)
>>
>
> Instead of "true" let insert() return the id.
>
> And while looking at your code:
> - You wrote in your DocBlocks, that the methods returns a boolean 0 or 1.
> Beside that this is wrong (0 or 1 are integers) you return either 'true' or
> nothing. You should return 'false' as well.
> - Returning a boolean to indicate the success of a method only makes sense,
> when "not successful" is a valid case, but I guess when 'delete()' fail it
> not be treatened as "normal". You should throw an Exception instead. This
> also includes: It's not required, that a method returns something in every
> case. If "delete()" for example doesn't have to tell something, it
> shouldn't.
>
>
>>
>> http://de.php.net/manual/en/function.mysql-insert-id.php
>>
>> 2 - how does one do aggrigate select queries like "SELECT SUM(price) FROM
>> mytable" ... what I tried seemed to fail...
>>
>
> Nothing "seems to fail" ;) Either it fails, or not (or it just doesn't
> behave, like expected, what I see as "fail" too). So what happens?
>
Hi Sebastian,
Of course you're right.... well it does fail here...
when I try a page with this...
$results = $db->query('SELECT SUM(price) FROM tbl_1218');
the error is....
Fatal error: Problem preparing query in /Users/me/Sites/db/test/sqldb.php on
line 281
/**
* Method attempts to prepare the SQL query
* and throws an error if there was a problem.
*/
protected function _prepareQuery()
{
//echo $this->_query; rev this is now fixed with this update
if (!$stmt = $this->_mysql->prepare($this->_query)) {
trigger_error("Problem preparing query", E_USER_ERROR); <<<<<--- this
is line 281
}
return $stmt;
}
>
>>
>>
>> And if anyone can point to some good OOP training URL's I'd appreciate it.
>>
>> Thanks in advance for any assistance...
>>
>>
>>
>>
>>
>>
>>
>> --
>> Thanks,
>> Dave - DealTek
>> deal...@gmail.com
>> [db-12]
>>
>>
>> --
>> PHP General Mailing List (http://www.php.net/)
>> To unsubscribe, visit: http://www.php.net/unsub.php
>>
>>
>
>
> --
> github.com/KingCrunch
--
Thanks,
Dave - DealTek
deal...@gmail.com
[db-12]
--- End Message ---
--- Begin Message ---
On Sun, Dec 16, 2012 at 2:08 PM, Matijn Woudt <tijn...@gmail.com> wrote:
> On Sun, Dec 16, 2012 at 4:38 PM, dealTek <deal...@gmail.com> wrote:
>
> > Hi all,
> >
> > Noobie starting to learn oop for databases from here:
> >
> >
> >
> https://github.com/JeffreyWay/PHP-MySQL-Database-Class/blob/master/MysqlDb.php
> >
> > I've got lots working but have a few issues:
> >
> > 1 - after an insert I'd like to get the id of the new record and I'm not
> > sure how to get that...
> >
> > mysql_insert_id (depricated?) or mysqli_insert_id() (I am using mySql
> 5.3)
> >
> > not sure where to add this... (most likely in MysqlDb.php but I don't
> know
> > where or how...)
> >
> > http://de.php.net/manual/en/function.mysql-insert-id.php
>
>
>
> try SELECT LAST_INSERT_ID();
> it should give you the id of the last inserted row (on a connection basis).
>
>
>
> >
> >
> > 2 - how does one do aggrigate select queries like "SELECT SUM(price) FROM
> > mytable" ... what I tried seemed to fail...
> >
> >
> Please show is exact query that failes, and give the error it returns.
>
>
> >
> > And if anyone can point to some good OOP training URL's I'd appreciate
> it.
> >
> > Thanks in advance for any assistance...
> >
> >
> Note sure what OOP has to do with MySQL, but I'd say google for PHP OOP and
> there's plenty of good stuff available.
>
> - Matijn
>
I'd do
select sum(price) as price
that way the column name returned is "price" and not a derived column name
--- End Message ---
--- Begin Message ---
2012/12/17 dealTek <deal...@gmail.com>
>
> On Dec 16, 2012, at 10:08 AM, Sebastian Krebs <krebs....@gmail.com> wrote:
>
> > 2012/12/16 dealTek <deal...@gmail.com>
> >
> >> Hi all,
> >>
> >> Noobie starting to learn oop for databases from here:
> >>
> >>
> >>
> https://github.com/JeffreyWay/PHP-MySQL-Database-Class/blob/master/MysqlDb.php
> >>
> >> I've got lots working but have a few issues:
> >>
> >> 1 - after an insert I'd like to get the id of the new record and I'm not
> >> sure how to get that...
> >>
> >> mysql_insert_id (depricated?) or mysqli_insert_id() (I am using mySql
> 5.3)
> >>
> >> not sure where to add this... (most likely in MysqlDb.php but I don't
> know
> >> where or how...)
> >>
> >
> > Instead of "true" let insert() return the id.
> >
> > And while looking at your code:
> > - You wrote in your DocBlocks, that the methods returns a boolean 0 or 1.
> > Beside that this is wrong (0 or 1 are integers) you return either 'true'
> or
> > nothing. You should return 'false' as well.
> > - Returning a boolean to indicate the success of a method only makes
> sense,
> > when "not successful" is a valid case, but I guess when 'delete()' fail
> it
> > not be treatened as "normal". You should throw an Exception instead. This
> > also includes: It's not required, that a method returns something in
> every
> > case. If "delete()" for example doesn't have to tell something, it
> > shouldn't.
> >
> >
> >>
> >> http://de.php.net/manual/en/function.mysql-insert-id.php
> >>
> >> 2 - how does one do aggrigate select queries like "SELECT SUM(price)
> FROM
> >> mytable" ... what I tried seemed to fail...
> >>
> >
> > Nothing "seems to fail" ;) Either it fails, or not (or it just doesn't
> > behave, like expected, what I see as "fail" too). So what happens?
> >
>
> Hi Sebastian,
>
> Of course you're right.... well it does fail here...
>
> when I try a page with this...
>
> $results = $db->query('SELECT SUM(price) FROM tbl_1218');
>
> the error is....
> Fatal error: Problem preparing query in /Users/me/Sites/db/test/sqldb.php
> on line 281
>
>
> /**
> * Method attempts to prepare the SQL query
> * and throws an error if there was a problem.
> */
> protected function _prepareQuery()
> {
> //echo $this->_query; rev this is now fixed with this update
> if (!$stmt = $this->_mysql->prepare($this->_query)) {
> trigger_error("Problem preparing query", E_USER_ERROR); <<<<<---
> this is line 281
> }
> return $stmt;
> }
>
>
Use mysqli_error() to get the _real_ error. By the way it's better to use
exceptions
http://php.net/mysqli.error.php
http://php.net/mysqli.error-list
http://php.net/mysqli.error
>
>
>
> >
> >>
> >>
> >> And if anyone can point to some good OOP training URL's I'd appreciate
> it.
> >>
> >> Thanks in advance for any assistance...
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >> --
> >> Thanks,
> >> Dave - DealTek
> >> deal...@gmail.com
> >> [db-12]
> >>
> >>
> >> --
> >> PHP General Mailing List (http://www.php.net/)
> >> To unsubscribe, visit: http://www.php.net/unsub.php
> >>
> >>
> >
> >
> > --
> > github.com/KingCrunch
>
>
> --
> Thanks,
> Dave - DealTek
> deal...@gmail.com
> [db-12]
>
>
--
github.com/KingCrunch
--- End Message ---
--- Begin Message ---
On Sun, Dec 16, 2012 at 9:38 AM, dealTek <deal...@gmail.com> wrote:
> Noobie starting to learn oop for databases from here:
Cool. :)
> mysql_insert_id (depricated?) or mysqli_insert_id() (I am using mySql 5.3)
The mysqli version would be preferred, since you're using mysqli in that class.
> 2 - how does one do aggrigate select queries like "SELECT SUM(price) FROM
> mytable" ... what I tried seemed to fail...
Problem there is that the query method forces everything through
prepare, and you don't have a preparable statement. I'd write another
method for such single values where you won't sent it through
prepare/execute/bind, and just suck in the value and return it.
--- End Message ---