element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Raspberry Pi
  • Products
  • More
Raspberry Pi
Raspberry Pi Forum MySql and Php
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Raspberry Pi to participate - click to join for free!
Featured Articles
Announcing Pi
Technical Specifications
Raspberry Pi FAQs
Win a Pi
Raspberry Pi Wishlist
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • Replies 9 replies
  • Subscribers 668 subscribers
  • Views 1863 views
  • Users 0 members are here
  • html
  • raspberry_pi
  • raspberrypi
  • php
  • iot cloud
  • server
  • mysql
  • web server
Related

MySql and Php

nicolaoscon96
nicolaoscon96 over 5 years ago

Hello there,

 

I have a question and its not on electronics. I am building a website (to using MySQL and PHP) in order to control various things around the house (IoT). I manage to connect the database to the website all good until here but my question is...I am gonna have and other people added to the database each one with his/her own credentials (my family for example). How am I going to keep each one's settings separate? Can i create a new column in sql for each (e.g toggle button I add in PHP?) Is it cleaver to add a new table for each user that is added> (to half answer this question> adding another table I am going to overpopulate the database and its going to be a nightmare for maintenance and performance.

 

Any suggestions on this one?

 

Thanks a lot

nicolaoscon96

NcCon

  • Sign in to reply
  • Cancel
  • shabaz
    shabaz over 5 years ago

    Hi Nicolas,

     

    I cannot imagine the database will grow much, even if you have multiple tables to support your needs. Multiple tables is a normal scenario. Databases (even on the Pi) can handle tens of thousands of entries with little performance impact, since you're not making so many queries per sec.

    So, I'd suggest design the table or tables to meet your needs, and efficiency and maintenance will likely not be an issue for a home IoT solution.  Once you have a table designed, a normal way (I'm not a DB expert, but this is the way I have done it in the past) you should be adding rows as required. So, you could (say) have a table of users, and you'd add a row as each new user is required or subscribes. User permissions could be stored in the row too. You could also have a table of devices perhaps.

    What might impact performance a lot is the actual web server. For a simple Pi solution, Lighthttpd is definitely preferred over Apache, it will run much faster with less resource usage.

    • Cancel
    • Vote Up +3 Vote Down
    • Sign in to reply
    • Cancel
  • clem57
    clem57 over 5 years ago

    Hi nicolaoscon96 . I work with mainframe tables.To a degree my colleague is correct. A good design follows:

    1. Table named "users" with a column keyed with "username". The next columns are "permission", "active", etc
    2. Table named "device" with a column keyed with "devicename". The next columns are "attributes", "type", etc.
    3. Table named "joined-user-dev" with column keyed with "number". It auto increments. Columns named "username" and "devicename"

    To use this structure you join #1 with # 2 and #3 above to list all the relationships. If this sounds complicated, I suggest you read http://www.dummies.com/programming/sql/how-to-design-a-sql-database/

    • Cancel
    • Vote Up +3 Vote Down
    • Sign in to reply
    • Cancel
  • nicolaoscon96
    nicolaoscon96 over 5 years ago in reply to clem57

    Its not complicated at all. I finished my computer science degree and am more into databases ..i know my way around. Thanks for the answer

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
  • nicolaoscon96
    nicolaoscon96 over 5 years ago in reply to shabaz

    I will try it...thanks a lot for the answer

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Cancel
  • clem57
    clem57 over 5 years ago in reply to nicolaoscon96

    Ah. Then you see I did a many to many with #3 in the middle.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Jan Cumps
    Jan Cumps over 5 years ago

    if setings are per user, you can add a user_id column to each table that has user_dependent values.

    When inserting a new setting/record for the user, fill in the user_id.

    When updating or removing a setting, use the user_id in the where clause.

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Cancel
  • SGarciaV
    SGarciaV over 5 years ago

    Here is another idea:

     

    A users table, columns Id, Username, and User's name. Your choice if you need the name in multiple columns (first name, middle, last) or just one. It might be overkill, but other fields can be used to further describe the user, (gender, address, DOB, etc.) The username could be an email address or a unique name that the user chooses for him/herself to log in.

     

    Settings table, columns Id and setting description, such as Password, Color theme, Status (active, disabled), last log in date/time, etc.

     

    User_Settings table, columns id, user id, settings id, value

     

    Good luck with your project! sgarcia

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Cancel
  • luigimorelli
    luigimorelli over 5 years ago

    Adding and manage items with PHP and MySQL is not a nightmare, if you know what you are doing, and the table size will be kept low.

    Consider designing the tables before creating them, to better understande how to access the records. Also, to keep things quick, remember that indexing is your friend.

    Many here gave you possibe parts of the final solution. What I can add is: always mind security when juggling with databases and IoT.

     

    1. Always change default passwords
    2. Use variables in your queries
    3. Sanitize queries (i.e. check return values before using them)
    4. Use secure wireless networks (possibly WPA2)

     

    And please, keep us informed about your progress: we might even help you write down a tech post. image

     

    Luigi

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Cancel
  • balearicdynamics
    balearicdynamics over 5 years ago in reply to luigimorelli

    There are some useful tools, like the MySQL console running on both Windows and OSX (I think on Linux too) platforms. This gives you the possibility to design graphically the database, create your queries and test the consistency of the entire system. The same tool can be connected to both local and remote databases to organize tables, queries, static queries and all, as well as producing a graphical view of the database and the various relations between tables. This is a local tool very useful when creating a new database from scratch also because you don't need to stay always connected with the remote web server. I use it for custom database designs. When the database has been created you can move to the online version managing it with phpMySQL that gives a lot of features also for data extraction, data upload (accept xml, csv, excel format, and text only). With PhpMySQL it is also almost easy to create several permissions (without the need to create the corresponding users in the Linux environment).

     

    Indeed, if you are basing your architecture on wordpress, that I strongly suggest also if your web site has nothing to do with the WP themes and plugins, if you have already (you need to) the suite Apache2 + MySQL + PhpMySQL the WP installation also creates its own standard database that can then be updated/upgraded with custom tables, special permissions and more. Frankly, based on my personal experience I always prefer to create a separate custom DB associated with the standard WP database to manage this case of complex data architectures.

     

    Enrico

    • Cancel
    • Vote Up +4 Vote Down
    • Sign in to reply
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube