Forum: Ruby on Rails Reading MySQL rows

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
3b1daae9f655c5dba51ff1cdf03f1bef?d=identicon&s=25 Martin Stabenfeldt (Guest)
on 2006-04-11 18:36
(Received via mailing list)
Hi there,

I´m having difficulties reading the content of some rows in my database.
Tried to use some of the code at page 221 in the pickaxe, but didn´t
make it work.

The SQL query works fine directly against the database.
  mysql> select id, count, company from users where name = "martin";
+----+-------+------------+
| id | count | company |
+----+-------+------------+
|  1   |     0   |                  |
+----+-------+------------+



def count(number)
   puts "count() reached!\n user is #{@username} "	 # this works

   userdata = User.find_by_sql("select id, count, company from users
where name = '@username' ")
   account = userdata[0]
   puts "account-id: #{@account.id}"  	# empty
   puts "the name of the company is: #{@account.company}, count #
{@account.count}\n" 		# empty

end

How do I collect the content of the id, count and company field to
variables?


I´m very grateful for all help I can get!

--
Best regards,
Martin Stabenfeldt_______________________________________________
Rails mailing list
Rails@lists.rubyonrails.org
http://lists.rubyonrails.org/mailman/listinfo/rails
9ab183bb240ffd3a3966d5a615b4bdeb?d=identicon&s=25 Philip Ross (Guest)
on 2006-04-11 19:19
(Received via mailing list)
Martin Stabenfeldt wrote:

> end
Your last two puts lines reference @account, but the line before assigns
to account. @account will be nil unless assigned already in the current
object.

Also, the SQL sent to the database will currently contain the literal
string "@username" as the name rather than the contents of @username.
The best way to pass parameters to the database is with one of the
following two techniques:

userdata = User.find_by_sql(["select id, count, company from users where
name = ?", @username])

userdata = User.find_by_sql(["select id, count, company from users where
name = :name", {:name => @username})


--
Philip Ross
http://tzinfo.rubyforge.org/ -- DST-aware timezone library for Ruby
3b1daae9f655c5dba51ff1cdf03f1bef?d=identicon&s=25 Martin Stabenfeldt (Guest)
on 2006-04-11 20:59
(Received via mailing list)
Hi,

On Apr 11, 2006, at 7:14 PM, Philip Ross wrote:
>> end
> userdata = User.find_by_sql(["select id, count, company from users
> where name = ?", @username])
>
> userdata = User.find_by_sql(["select id, count, company from users
> where name = :name", {:name => @username})

Thanks!

I tried with this:

    userdata = User.find_by_sql(["select id, sendt, company from
users where name = ?", @username])

   @account = userdata[0]
   puts "id is: #{@account.id}, sendt: #{@account.sendt}}"

How should I write it to make puts print the right id and sent values?


Thanks again!

--
Regards,
Martin Stabenfeldt
3b1daae9f655c5dba51ff1cdf03f1bef?d=identicon&s=25 Martin Stabenfeldt (Guest)
on 2006-04-11 21:05
(Received via mailing list)
Hi,

On Apr 11, 2006, at 8:57 PM, Martin Stabenfeldt wrote:
>>> {@account.count}\n"         # empty
>>
>    userdata = User.find_by_sql(["select id, sendt, company from
> users where name = ?", @username])
>
>   @account = userdata[0]
>   puts "id is: #{@account.id}, sendt: #{@account.sendt}}"
>
> How should I write it to make puts print the right id and sent values?

I forgot to mention the most important detail, @account.id and
@account.sendt is still empty. :)

Sorry for not getting it right in the first email!

Regards,
Martin
9ab183bb240ffd3a3966d5a615b4bdeb?d=identicon&s=25 Philip Ross (Guest)
on 2006-04-12 11:11
(Received via mailing list)
Martin Stabenfeldt wrote:
> I forgot to mention the most important detail, @account.id and
> @account.sendt is still empty. :)

I'm not sure what the problem is here. There's an extra close brace at
the end of your puts line, but this shouldn't be causing any problem.

Perhaps you could try putting the following line in after running the
query to see what is returned:

puts userdata.inspect


--
Philip Ross
http://tzinfo.rubyforge.org/ -- DST-aware timezone library for Ruby
5d15c6821f3c3054c04b85471824ba7c?d=identicon&s=25 Richard Williams (Guest)
on 2006-04-12 13:08
(Received via mailing list)
On Tuesday, April 11, 2006, at 6:33 PM, Martin Stabenfeldt wrote:
>+----+-------+------------+
>   account = userdata[0]
>I�m very grateful for all help I can get!
>
>--
>Best regards,
>Martin Stabenfeldt_______________________________________________
>Rails mailing list
>Rails@lists.rubyonrails.org
>http://lists.rubyonrails.org/mailman/listinfo/rails

You should be able to do something like this:

   userdata = User.find_by_name(:first, @username)

The "by_name" compares @username with your "name" column.  All columns
are returned.  Then you examine columns like: "userdata.company".


I think your orginal query will work if you change it slightly.

   userdata = User.find_by_sql("select id, count, company from users
where name = '#{@username}'".
This topic is locked and can not be replied to.