PHP REST API From Scratch [1] - Database & Read

Поділитися
Вставка
  • Опубліковано 18 вер 2024
  • In this series we will put together a REST API using PHP with NO FRAMEWORK. We will use object oriented programming along with PDO to connect and query a MySQL database.
    Code:
    github.com/bra...
    💖 Become a Patron: Show support & get perks!
    / traversymedia
    Website & Udemy Courses
    www.traversymed...
    Follow Traversy Media:
    / traversymedia
    / traversymedia
    / traversymedia

КОМЕНТАРІ • 362

  • @RealToughCandy
    @RealToughCandy 6 років тому +82

    This is awesome! Can't wait to watch it all later tonight. We use an older framework to build our APIs (Apigility) at work and the documentation sucks. I think this is the series I need to understand what's going on under the hood. Thank you!!

    • @TraversyMedia
      @TraversyMedia  6 років тому +11

      RealToughCandy You’re very welcome 😉

    • @_Omni
      @_Omni 6 років тому +4

      N00B

    • @RealToughCandy
      @RealToughCandy 6 років тому +13

      @Omni, thank you!

    • @ionutcatalingheorghiu8953
      @ionutcatalingheorghiu8953 4 роки тому

      @@RealToughCandy hah.. Just saw one of your videos. And what a coïncidence. 1st comment i see is yours ! This means i need to subscribe ! 😂

    • @MrBoiks
      @MrBoiks 3 роки тому

      This is pretty epic

  • @MrBenjjj6
    @MrBenjjj6 6 років тому +6

    For those like me who are still quite new, doing it without frameworks is really useful as I actually learn a lot about how things work. Thank you!

  • @lifelover69
    @lifelover69 6 років тому +5

    Thank you for doing this with NO FRAMEWORK!
    Frameworks come and go, but the language remains.
    Many tutorials use {insert current trendy framework}, which obscures the inner workings of php.
    Great job done, mate.

    • @andresz1606
      @andresz1606 4 роки тому

      IMO frameworks are for people too lazy to learn the actual language and use it properly.

  • @engsiyad
    @engsiyad 6 років тому +21

    Man you read my mind. I have been searching this for 2 months

  • @ernestassimutis6239
    @ernestassimutis6239 6 років тому +25

    these little project series most exciting thing on your channel, thank you! I started my developer career a month ago, your role in it was HUGE Brad!

  • @johnmahugu
    @johnmahugu 3 місяці тому +1

    this is awesome, i created a php api from scratch today at work and this video goes to show me what needs to be improved as i made it in pure php, thanks alot. :)

  • @traceyshock2898
    @traceyshock2898 6 років тому +1

    I love PHP and have been using it off and on for about 10 years. I don't program full time. But i am always trying to learn new things. Thank you Brad, you are a really good instructor. I will be checking out your other courses. I actually learned a lot.

  • @codesus99
    @codesus99 4 роки тому +1

    I've spent 3weeks studying how API works but I didn't find any helpful resource like this serie. Thank you man we appreciate u. Please help us with a php PDO series with an simple project example 🙏🙏🙏🙏🙏

  • @helluci6449
    @helluci6449 4 роки тому +32

    2020 update would be nice

    • @PASTRAMIKick
      @PASTRAMIKick 3 роки тому +6

      PHP is quite old, is there a need for an update?

    • @gothicwave7761
      @gothicwave7761 3 роки тому

      @@PASTRAMIKick It's about as old as Java, Python, and Javascript, and it's being regularly updated? That said this is still PHP 7, so there's probably little to no need to for an update.

    • @nobytes2
      @nobytes2 3 роки тому

      Why? php still the same lol

  • @toomaxbeat7847
    @toomaxbeat7847 6 років тому +15

    That's really cool !! You and your videos are the main reasons to keep learning and continuing in this field

    • @TraversyMedia
      @TraversyMedia  6 років тому +3

      TOoma Dev thanks. That actually really means a lot and keeps me going

  • @wmd6917
    @wmd6917 2 роки тому

    As an old Informix DBA, esql server side vi guy I found this demo dead simple and it demystified what all the kiddies drone on about these days. Well done sir!

  • @sandy3028
    @sandy3028 4 роки тому +3

    Doing my first rest api now, feels like my head gonna explode. This video helped me a lot!

  • @NicholasIbarra01
    @NicholasIbarra01 6 років тому +1

    Why? Why do you make life's hardest problems seem like nothing?! Your videos never fail to impress, you have a true talent. Thank you for this, I was looking for an easy way to implement a PHP back end without using an adapter framework. This is perfect!

  • @FabricioEGiovanni
    @FabricioEGiovanni 6 років тому +2

    Awesome video! I'm currently migrating to Web Development and these 32:17 minutes gave me a bunch of valuable stuff + the main theme of the video. I've subscribed and will certainly watch the other classes.
    Thanks for your great contribution Brad.

  • @mkgamingentertainment3786
    @mkgamingentertainment3786 4 роки тому +1

    You can replace LEFT JOIN with WHERE clause such as "WHERE p.category_id = c.id" will do the same work as LEFT JOIN

  • @shuckle2134
    @shuckle2134 5 років тому

    Brad, not only are you a very bright and intelligent person, but you also posses the generosity to make amazing and professional tutorials like these for the community to view for free. Hats of to you sir :)

  • @RoulTrid
    @RoulTrid 2 роки тому

    This tutorial was a life saver for me. I made my Rest Api and connected 3 servers. Thank your for this.

  • @Satenc0
    @Satenc0 5 років тому +5

    we need a part 4 where you implement this with an user interface :D

  • @jaakkosuninen
    @jaakkosuninen 2 роки тому +1

    Calm and clear presentation. I tried and got this working. Thank you very much. Now I can take my time to get acquainted to it.

  • @Khayabushprojects
    @Khayabushprojects 6 років тому +4

    I've never loved PHP but this changed my mind i will learn it soon
    hey brad thank you buddy

  • @florianhermann1558
    @florianhermann1558 5 років тому +3

    Hi Brad, thanks for your work. If I can suggest you something : I know the goal is to make something from scratch but you could use composer for autoloading and a basic router like Fast Route. It will be a more real world approach !

  • @DucMinhTeaching
    @DucMinhTeaching 3 роки тому

    For most databases, PDOStatement::rowCount() does not return the number of rows affected by a SELECT statement. Instead, use PDO::query() to issue a SELECT COUNT(*) statement with the same predicates as your intended SELECT statement, then use PDOStatement::fetchColumn() to retrieve the number of matching rows.

  • @Tanzeel431
    @Tanzeel431 6 років тому +1

    The only code on the internet that actually worked. Thank you for sharing on git.

  • @justsain3236
    @justsain3236 3 роки тому

    I've been integrating 3rd party API's recently and finally got given the task of creating an endpoint, i managed to figure it out although it wasn't my best work....always learning though so.....here i am. Great vid :)

  • @donovanfrancis7184
    @donovanfrancis7184 4 роки тому +1

    Thanks for this really good tutorial!
    All the documentation that I have read indicates that the PDOStatement::rowCount method is not guaranteed to work for mysql databases. One way to workaround this is to do a "Select count(*) " using the same where conditions as the original query then fetch the results.

  • @jaimesastre1046
    @jaimesastre1046 5 років тому +1

    wow, just saw your video. Great presentation making it all so easy. I knew all the pieces, but here put together so structured and clear, just perfect!! Bravo!

  • @_Caose
    @_Caose 2 роки тому +1

    This is exactly what I was trying to build. Thank you

  • @uweopfern
    @uweopfern 5 років тому +3

    I love this so much currently having project that i am developing APIS in core php using PDO, can you please make authentication using JWT

    • @sodiqoyedotun3185
      @sodiqoyedotun3185 5 років тому

      Hello
      Kindly refer me to a tutorial when u find one.
      Thank u

  • @salamkottayam490
    @salamkottayam490 5 років тому

    Very well explained and easy to understand. if You can add utf8 support for the data also it will be helpful. Because while I implement for utf-8 it got stuck and i found the solution. Add : $this->conn->exec("set names utf8"); right after the new PDO statement in Database class. Thank You dear.

  • @techware1470
    @techware1470 6 років тому

    Hey thanks man! I'am currently working on my own CMS to make it easy for my clients to change text and all that stuff on the websides I build for them. It's all based on PHP in the backend and this tutorial is just what I was looking for. Because I#m experimenting with object oriented PHP and not that happy with my solution so far. So great that you help me with new input!

  • @ryanspivey1819
    @ryanspivey1819 2 роки тому

    Great tutorial, Brad. My only critique would be using the post table as an example since I'm so new to the PHP syntax, I felt confused at times if you were making a POST request or referencing the post table. That may just be me though.

  • @STSN3116
    @STSN3116 6 років тому

    I really like the way you stored the entire output in "data"

  • @bidam1984
    @bidam1984 6 років тому +143

    I love PHP, but PHP friendzoned me

    • @KD-xp4di
      @KD-xp4di 5 років тому

      Oh man. You too?

    • @spacenodus7959
      @spacenodus7959 5 років тому +3

      Python will never friendzone you

    • @Aru_im
      @Aru_im 5 років тому +13

      It's funny because in my language PHP stand for "Pemberi Harapan Palsu" translated as "False Promise Giver" as in friendzone.

    • @commanderbensisko
      @commanderbensisko 5 років тому +1

      Should have bought some phlowers every once in a while

    • @thecardboardboyz6320
      @thecardboardboyz6320 5 років тому

      Orang indonesia detected

  • @kamalhm-dev
    @kamalhm-dev 6 років тому +4

    Just in case you need an idea, I'm waiting for fullstack Vue.js, but no pressure ;D

  • @jackmanjls
    @jackmanjls 5 років тому

    Very seldom do I run across a video that is as well organized and instructive as this one....thumbs up.

  • @JanJanuszNosacz
    @JanJanuszNosacz 3 роки тому

    Really appreciate all those comments in code.

  • @shovkatmasimova1885
    @shovkatmasimova1885 3 роки тому +1

    First thank you for this video. I have a question. In the Read API data from db is coming with "data" object ( example: {"data":[{"id":"30","title":"","body":"","author":"","category_id":"0","category_name":null}]} ). How can I do this for the CREATE API. So how can I send data to the database in the "data" object? (example: {"data":[{"id":"15","title":"test","body":"test","author":"test","category_id":"15","category_name":null}]} )

  • @Sm0ke821
    @Sm0ke821 6 років тому

    thanks THANKS my teacher never explained how the fuck do an api rest and told us you have google..........
    THANKS YOU SAVED ME 6 MONTHS WITH THAT TEACHER AGAIN
    LOVE FROM CHILE (the country xD)

  • @truthShallPrevailRRVS
    @truthShallPrevailRRVS 4 роки тому

    TIp: IMO An easier (and cleaner) way to write SQL queries is by using double quotes and flower braces when you're including an object/associativeArray element.
    $fetchLimit = 5;
    $filter = array("month"=>"2020-08-30");
    $query = "
    SELECT
    *
    FROM
    posts
    WHERE
    user_id='{$params->user_id}'
    AND
    month='{$filter['month']}'
    LIMIT $fetchLimit
    ;
    ";

    • @spencer5028
      @spencer5028 2 роки тому

      Should use prepared statements when accepting user inputs, a few extra steps but safer and many useful properties

  • @edenr1988
    @edenr1988 5 років тому

    Hey awesome video !
    btw, just to point out you could save more line of codes using PDO::FETCH_CLASS, because you already have models for this case, something like: $row = $result->fetch(PDO::FETCH_CLASS, 'Post'); then you could just json_encode that object

  • @mstafadev6729
    @mstafadev6729 6 років тому +8

    i' am always wondering how you manage your time bcs this is not easy man, thank you

    • @TraversyMedia
      @TraversyMedia  6 років тому +4

      mstafa dev its hard but luckily its part my full time job

    • @mattlyxd
      @mattlyxd 6 років тому +5

      It'd be neat to see an episode about how you manage your time for the rest of us, maybe give us some pointers? :) I've also wondered as I'm trying to catch up with you! Absolute huge fan of your channel!

    • @IsfhanAhmed
      @IsfhanAhmed 6 років тому

      me also wana meet you

  • @amirzakaria8829
    @amirzakaria8829 2 роки тому

    It was so professional. appreciation in an infinite loop. wow. expressions, style of coding, explanation, logic and procedure was so ideal. Thank you man. Thanks a lot. You are one of a kind really. We need you and more like you.

  • @mchamouda4915
    @mchamouda4915 6 років тому

    Really very Nice i Watched Many Videos About Restful API but i'm not understand well but when i watched this video i gated Helpful now i'm creating my own API without any other Help thank you Very Much , sorry for my Bad English .

  • @thaof1898
    @thaof1898 Рік тому +1

    thank you so much, i did it :D and deployed it in my own host website

  • @sfa327
    @sfa327 6 років тому +2

    Thank you, you are the best
    Can you do video on how to make it secure and access by token or it required authentication

  • @shivadigitalweb9265
    @shivadigitalweb9265 5 років тому +5

    Hi, Brad. Could you please make video tutorials on JWT/Auth REST API in PHP and Laravel. I could not find any videos on your channel based on Authentication. Thanks.

    • @sodiqoyedotun3185
      @sodiqoyedotun3185 5 років тому

      Hello
      Kindly refer me to a tutorial when u find one.
      Thank u

    • @Mohammed24441
      @Mohammed24441 4 роки тому

      ua-cam.com/play/PLe30vg_FG4OSbizS6Gpw_LICp9zBcmjZU.html

  • @herbertk9266
    @herbertk9266 6 років тому +3

    Brad your the best thks for your time, thanks for sharing

  • @garretthamelin3653
    @garretthamelin3653 5 років тому

    Dude, thank you!!!! you're the hero we need but not the one that we deserve.... If we ever meet in person drinks are on me!

  • @abdullahquhtani4247
    @abdullahquhtani4247 3 роки тому

    Could you please send the method to connect to MSSQL Server? And also confirm whether it is gonna be slow unless using ODBC some ppl said that It’s slow when use PDO with SQL server. Thank you.

  • @jerryurena6370
    @jerryurena6370 5 років тому +1

    you should consider adding pagination data filtering to these

  • @samueltorres2485
    @samueltorres2485 5 років тому

    You're tutorials are always lit! Thanks Brad!

  • @claudwatari
    @claudwatari 2 роки тому

    2021, I'm here. Thanks for this. Very helpful.

  • @riskyrici
    @riskyrici 6 років тому

    You are our saviour Brad. I can't thank you enough. This is really helpful and it means a lot. Huge fan!!!

  • @astianmuchui
    @astianmuchui 3 роки тому

    In all honesty, This is my coding university

  • @rosselliot8971
    @rosselliot8971 6 років тому

    Brad, what's really needed are authentication tuts for APIs, JWT or otherwise.

    • @TaelurAlexis
      @TaelurAlexis 6 років тому

      Ross Elliot he seriously already has videos on that.

    • @rosselliot8971
      @rosselliot8971 6 років тому

      TaelurAlexis seriously?

  • @reeverbstudios
    @reeverbstudios 2 роки тому

    Nice one Mr! I hope I can get everything you say here...It has been days looking for a good PHP PDO class.

  • @informatiquedz9800
    @informatiquedz9800 6 років тому +1

    Hello, thank you for all your videos :)
    can you make a video to haw secure passwords before storing them in the database in PHP?
    And will you do more courses about PHP?

    • @Alturic
      @Alturic 6 років тому +4

      It's as simple as - $hashedPassword = password_hash($providedPassword) - , of course you get set the algorithm, provide an actual salt if you want, etc. php.net/manual/en/function.password-hash.php

  • @rajdhanki8740
    @rajdhanki8740 6 років тому

    Just one word awesome u r reading the programmers mind

  • @MrRicharddaniel
    @MrRicharddaniel 6 років тому

    More PHP Please.... All Freelancers need to learn PHP to get mroe clients from all small businesses or wordpress.
    Please make more content focused on freelancing (PHP)

  • @ramratech1919
    @ramratech1919 4 роки тому

    hi brad, you explain complex topics in a simple way. Thank you for sharing good tutorials.

  • @abhishekverma614
    @abhishekverma614 3 роки тому

    Awesome, this channel never disappoints whenever I come here, thanks a lot !!!

  • @molotovctail6972
    @molotovctail6972 6 років тому

    I've been looking at your Slim REST tutorial - is this new approach preferred or are they very similar? I know the Slim tutorial is two years old now.
    And thanks for the tutorials and much appreciate your down to earth approach!

  • @gemilaguinaldo6723
    @gemilaguinaldo6723 3 роки тому

    now i understand how fast we create api's via frameworks. there's so many tedious codes. but I think this will be faster as we are using vanilla php

  • @xCodeSoul
    @xCodeSoul 5 років тому

    For better usage and security for mysql
    Use medoo for execute any sql query , its simple ans secure
    Thanks

  • @SajidLatifDK
    @SajidLatifDK 6 років тому +1

    Thanks for making my day again 👍

  • @bodyandblood
    @bodyandblood 5 років тому

    Many thanks. The ajaxCall.html form id should read 'form' and not 'apiform' . This is necessary so as to match var url = $('form').serialize(); in the ajaxCall.js file. Now ajaxCall.html will work. Very small correction in a magnificent tutorial. Bless you.

  • @timeforrice
    @timeforrice Рік тому

    Great video. Love seeing him making PHP content more

  • @wsh4and
    @wsh4and 6 років тому

    Wow, you read my mind 😁. Just what I need for school assignment.

  • @khumozin
    @khumozin 6 років тому +1

    Nice video. Can you please do a User Authentication[JWT] with PHP.

    • @sodiqoyedotun3185
      @sodiqoyedotun3185 5 років тому

      Hello
      Kindly refer me to a tutorial when u find one.
      Thank u

  • @rahulvanmali1406
    @rahulvanmali1406 6 років тому

    Waiting for a video on docker container + node js microservices! I guess it's in your to-do list

  • @YoannesGeisslersilva
    @YoannesGeisslersilva 6 років тому

    For me it makes way easier to understand: $str_concat = "mysql:host=$this->host;dbname=$this->db_name"; Dot/quotes/dots/quotes are quite confusing sometimes.

  • @stephh4392
    @stephh4392 6 років тому

    This is exactly what I want to learn!!!!Thank u!!!!Love your videos!!!

  • @rumpeltv1080
    @rumpeltv1080 6 років тому

    Awesome video! Which font are you using?

  • @patryk3852
    @patryk3852 4 роки тому

    Brad, you are like a GOLD!!

  • @wendellfaustino2301
    @wendellfaustino2301 2 роки тому

    Hi thanks for this video. How to use stored procedure in this kind of method?

  • @AbdullahAbbasAwan
    @AbdullahAbbasAwan 6 років тому

    Thank you so much. Please add one more video in this course about HOW to upload whole project or files on GIT & Gist. Thanks

  • @LuisOtavioZimmermann
    @LuisOtavioZimmermann 4 роки тому

    Hey Brad! There's a tutorial on how to add auth on that API?
    I've been searching that for a long time and still didn't found.
    Thanks for all the help and all of those videos.
    You'r videos are amazing, big thanks from Brazil.

  • @GauravLonkar
    @GauravLonkar 3 роки тому

    +1 for the Quality of the Code you write. ❤️

  • @jorgevazquez3317
    @jorgevazquez3317 5 років тому

    I uploaded my app to my live share hosting server but I get "no page found." as long as I tested the app using php -S localhost:8080/quote it worked, but when I tried using it without the port number, just through apache, it doesn't work. I have created .htaccess file and enabled mod_rewrite in apache according to slim framework web server documentation for apache. How can I get this running in apache? thanks

  • @tarihart8385
    @tarihart8385 6 років тому

    Thanks for this series.Please make a series on vuejs,angular 5 or reactjs and graphql with mongodb.Also a series on sailsjs auth with passport.Or using vuejs, angular with a symfony 4 api.Or angular with laravel.Or this api with vuejs or angular.Or vuejs or angular with ruby on rails.Or authentication with adonisjs.Or vuejs or angular with an adonisjs api!Hope you consider these in future!Thanks anyways!

  • @DucMinhTeaching
    @DucMinhTeaching 3 роки тому

    Hi, thank you for the video. I wonder why the result of the query is a boolean? This confuses me so much!

  • @jroseme
    @jroseme Рік тому

    Awesome tutorial, just works.

  • @Sid629
    @Sid629 5 років тому

    Thank you very much for your tutorials Mr. Traversy.

  • @jediampm
    @jediampm 4 роки тому

    some questions:
    why not using routes and prettier URL ( without php extension)?
    why are you not restrict the loading data only for get?

  • @carollillefield2462
    @carollillefield2462 3 роки тому

    Thank you for all you do!!!! When in doubt you are my go to!

  • @AbhishekKumar-mq1tt
    @AbhishekKumar-mq1tt 6 років тому

    Thank u for this awesome series, can u make a video series on express, mongodb, nodejs store rest api

  • @womeninmovesolutionschanne1065
    @womeninmovesolutionschanne1065 2 роки тому

    My favourite tutor

  • @KangJangkrik
    @KangJangkrik 3 роки тому

    Laravel is darn hella complex now, it's time to go back to basic

  • @andreranulfo-dev8607
    @andreranulfo-dev8607 4 роки тому

    PHP is life.

  • @tiny6912
    @tiny6912 5 років тому

    There's no need for the $row extraction and the existence of the $post_item. Just do $row['body'] = html_entity_decode($row['body']);
    and array_push($posts_arr['data'],$row); to get the same result with less code.

  • @bulldog2024
    @bulldog2024 6 років тому

    Great tutorial. Just what I was looking for.

  • @nightlifeking
    @nightlifeking 6 років тому +1

    This is awesome, do you have a Laravel version?

    • @PsychoGod9898
      @PsychoGod9898 6 років тому +1

      He has a full Laravel series: ua-cam.com/video/EU7PRmCpx-0/v-deo.html

  • @ChintanUmarani
    @ChintanUmarani 6 років тому

    simple and well explained, Kudos 👍

  • @brandondelacruz934
    @brandondelacruz934 3 роки тому

    Also, confusing note. Why do you have to type in
    $posts_arr = array();
    $posts_arr['data'] = array();
    When you can just say
    $posts_arr['data'] = array();
    and remove the first one

  • @abhirupdey3033
    @abhirupdey3033 5 років тому +1

    Connection Error: SQLSTATE[HY000] [1049] Unknown database ' myblog'
    Fatal error: Uncaught Error: Call to a member function prepare() on null in C:\xampp\htdocs\API_test\models\Post.php:41 Stack trace: #0 C:\xampp\htdocs\API_test\api\post
    ead.php(17): Post->read() #1 {main} thrown in C:\xampp\htdocs\API_test\models\Post.php on line 41

  • @Mike-ku9jf
    @Mike-ku9jf 5 років тому

    What should I choose to become full stack php or node js? what will be "better" ?

  • @CorporalPoon
    @CorporalPoon 6 років тому +1

    omg just what i wanted. thank you

  • @dev_kyer
    @dev_kyer 4 роки тому +1

    call to a member function prepare() on null. How can I fix this. need help

    • @princeaugustine1929
      @princeaugustine1929 4 роки тому

      go to phpmyadmin->myblog->priviledges
      Then Find username=root and host=localhost then click all priviledges ,find the change password option and change it to desired password.Make sure the password should match will phpymyadmin ->config.inc file

  • @zealousprogrammer4539
    @zealousprogrammer4539 6 років тому

    Hello everyone, Brad I suggest a tutorial with Pusher Chakit - it's one of the service Pusher offers (completely free for now in beta) to create chat app cli/frontend applications easily. Thanks

  • @arunkumartiwari953
    @arunkumartiwari953 6 років тому +3

    Anyone can tell me that it will work in xamm controller localhost