This document discusses building dynamic web sites using databases. It begins by explaining that truly dynamic sites have content that changes over time, is customized for users, and can be automatically generated. It recommends using a database rather than storing content in files, as databases are faster, more efficient, and easier to manage when content grows large. The document then provides an overview of key database concepts like tables, fields, queries, and the relational structure. It gives an example of how a student database might be implemented and why a database is better than flat files for such an application. Finally, it discusses MySQL as a popular open-source database and shows basic concepts like connecting to the database, selecting a database, performing queries, and extracting record
Data Definition Language (DDL), Data Definition Language (DDL), Data Manipulation Language (DML) , Transaction Control Language (TCL) , Data Control Language (DCL) - , SQL Constraints
Data Definition Language (DDL), Data Definition Language (DDL), Data Manipulation Language (DML) , Transaction Control Language (TCL) , Data Control Language (DCL) - , SQL Constraints
This presentation is related to nosql database and nosql database types information. this presentationa also contains discussion about, how mongodb works and mongodb security and mongodb sharding information.
Human Rights are those basic standards without which people cannot Human rights could be generally defined as those rights which are inherent in outs which we cannot live as human beings.
Computer instructions are normally stored in consecutive memory locations and are executed sequentially one at a time.
The control reads an instruction from a specific address in memory and executes it.
It then continues by reading the next instruction in sequence and executes it, and so on.
A computer instruction is a binary code that specifies a sequence of micro operations for the computer.
Instruction codes together with data are stored in memory.
The computer reads each instruction from memory and places it in a control register.
The control unit then interprets the binary code of the instruction and proceeds to execute it by issuing a sequence of micro operations.
The inventors of java wanted to design a language which could offer solutions to some of the problems encountered in modern programming
The primary objective of Java programming language creation was to make it portable, simple and secure programming language.
The features of Java are also known as Java buzzwords.
JVM is a part of java programming language.
JVM is the engine that drives the java code.
Mostly in other programming languages, complier produce code for a particular system ut Java cier produce Bytecode for a
JVM is a software, staying on top of Operating System, such as UNIX, Windows NT.
It create the environment that java language lives
Constructor are almost similar to methods except for two things
Name is same as the class name
It has no return type
Constructor in java is used to create the instance of the class
The ability to conceal the contents of sensitive messages and to verify the contents of messages and the identities of their senders have the potential to be useful in all areas of business
Deliberate software attacks occur when an individual or group designs and deploys software to attack a system.
This attack an consist of specially crafted software that attackers trick users into installing on their systems.
This software is used to overwhelm the processing capabilities of online system or to gain access to protected systems by hidden .
Forces of Nature, sometimes called acts of God, can present some of the most dangerous threats because they usually occur with little warning and are beyond the control of people.
It is not possible to avoid threats from forces of nature, organizations must implement controls to limit damage and prepare contingency plans for continued operations
A honeypot is a deliberately compromised computer system that allows an attacker to exploit and investigate its vulnerability to improve the security policy.
Honeypots apply to any computing resource, such as software and networks.
Subset sum problem is to find subset of elements that are selected from a given set whose sum adds up to a given number K. We are considering the set contains non-negative values. It is assumed that the input set is unique (no duplicates are presented).
undirected graph and a number m, determine if the graph can be colored with at most m colors such that no two adjacent vertices of the graph are colored with the same color.
Apache storm is a frame work for distributed and fault tolerant and real time computation
Apache storm coding are written in CLOJURE language created by NATHAM MARZ and the team Back type
Apache storm is developed by the Twitter and release in 17 sep 2011
Apache storm is a open source
Storm is open source, robust, and user friendly. It could be utilized in small companies as well as large corporations.
Storm is fault tolerant, flexible, reliable, and supports any programming language.
Allows real-time stream processing.
Storm provides guaranteed data processing even if any of the connected nodes in the cluster die or messages are lost.
More from V.V.Vanniaperumal College for Women (20)
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Generating a custom Ruby SDK for your web service or Rails API using Smithyg2nightmarescribd
Have you ever wanted a Ruby client API to communicate with your web service? Smithy is a protocol-agnostic language for defining services and SDKs. Smithy Ruby is an implementation of Smithy that generates a Ruby SDK using a Smithy model. In this talk, we will explore Smithy and Smithy Ruby to learn how to generate custom feature-rich SDKs that can communicate with any web service, such as a Rails JSON API.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
2. BUILDING DATA DYNAMIC WEB SITES
Truly dynamic web sites
Content changes over time
Content customised for individual user
Content automatically generated
Content Programmatically generated
Can be File system based
HTML and Images stored on File System
Gets hard to manage over time
Database based
HTML, Images etc all generated from database
Easier to manage
If data is too large, can overload the database
3.
4. DATABASE
• Structured collection of data.
• Tables
• Fields
• Query
• Reports
• Essentially a much more sophisticated
implementation of the flat files.
5.
6. RELATIONAL DATABASE
• Stores data in separate tables instead of
a single store.
• Relationships between tables are set
• In theory, this provides a faster, more
flexible database system.
7. EXAMPLE
• We wish to maintain a database of student names, IDs, addresses,
and any other information.
• Will be updated frequently with new names and information.
• Will want to retrieve data based on some predicate.
• e.g, ‘give me the names of all Massey students who live in
Albany’.
• Will want to update database with new information about students,
not previously recorded.
• e.g., may decide we want to include IRD nos.
• Very difficult to manage using ‘flat file’ systems
8. DATABASES
Fast, Efficient back end storage
Easier to manage than file system based approach
Relational Database structure
Well developed theory and practise
Multi-user capable
Multithreaded, multiprocessor, sometimes cluster
based systems
Standards based queries
Structured Query Language (SQL)
9. MYSQL DATABASE
world's most popular open source database
because of its consistent fast performance,
high reliability and ease of use
Open Source License:- free
GNU General Public License
Free to modify and distribute but all modification must
be available in source code format
Commercial:- not free
Fully paid up professional support
• used by Google, Facebook Nokia, YouTube,
Yahoo!, Alcatel-Lucent, Zappos.com, etc.
10. BASIC DATABASE SERVER CONCEPTS
Database runs as a server
Attaches to either a default port or an administrator
specified port
Clients connect to database
For secure systems
authenticated connections
usernames and passwords
Clients make queries on the database
Retrieve content
Insert content
SQL (Structured Query Language) is the language
used to insert and retrieve content
11.
12. DATABASE MANAGEMENT SYSTEM
• Manages the storage and retrieval of data
to and from the database and hides the
complexity of what is actually going on
from the user.
Database User
Database
Management
System
• MySQL is a relational database
management system
13. • MySQL can be controlled through a
simple command-line interface; however,
we can use phpMyAdmin as an interface
to MySQL.
• phpMyAdmin is a very powerful tool; it
provides a large number of facilities for
customising a database management
system.
14. In MySQL there are three main types :
• text
• number
• Date/Time.
15. CHAR(size) Holds a fixed length string (can contain letters, numbers, and special
characters). The fixed size is specified in parenthesis. Can store up to
255 characters
VARCHAR(size) Holds a variable length string (can contain letters, numbers, and special
characters). The maximum size is specified in parenthesis. Can store up
to 255 characters. Note: If you put a greater value than 255 it will be
converted to a TEXT type
TINYTEXT Holds a string with a maximum length of 255 characters
TEXT Holds a string with a maximum length of 65,535 characters
MEDIUMTEXT Holds a string with a maximum length of 16,777,215 characters
LONGTEXT Holds a string with a maximum length of 4,294,967,295 characters
ENUM(x,y,z,etc.) Let you enter a list of possible values. You can list up to 65535 values in
an ENUM list. If a value is inserted that is not in the list, a blank value will
be inserted.Note: The values are sorted in the order you enter them.
You enter the possible values in this format: ENUM('X','Y','Z')
http://www.w3schools.com/sql/sql_datatypes.asp
16. TINYINT(size) -128 to 127 normal. 0 to 255 UNSIGNED*. The maximum number of digits
may be specified in parenthesis
SMALLINT(size) -32768 to 32767 normal. 0 to 65535 UNSIGNED*. The maximum number
of digits may be specified in parenthesis
MEDIUMINT(size) -8388608 to 8388607 normal. 0 to 16777215 UNSIGNED*. The maximum
number of digits may be specified in parenthesis
INT(size) -2147483648 to 2147483647 normal. 0 to 4294967295 UNSIGNED*. The
maximum number of digits may be specified in parenthesis
BIGINT(size) -9223372036854775808 to 9223372036854775807 normal. 0 to
18446744073709551615 UNSIGNED*. The maximum number of digits may
be specified in parenthesis
FLOAT(size,d) A small number with a floating decimal point. The maximum number of
digits may be specified in the size parameter. The maximum number of
digits to the right of the decimal point is specified in the d parameter
DOUBLE(size,d) A large number with a floating decimal point. The maximum number of
digits may be specified in the size parameter. The maximum number of
digits to the right of the decimal point is specified in the d parameter
DECIMAL(size,d) A DOUBLE stored as a string , allowing for a fixed decimal point. The
maximum number of digits may be specified in the size parameter. The
maximum number of digits to the right of the decimal point is specified in
the d parameter
http://www.w3schools.com/sql/sql_datatypes.asp
17. DATE() A date. Format: YYYY-MM-DDNote: The supported range is from '1000-01-
01' to '9999-12-31'
DATETIME() *A date and time combination. Format: YYYY-MM-DD HH:MM:SSNote: The
supported range is from '1000-01-01 00:00:00' to '9999-12-31 23:59:59'
TIMESTAMP() *A timestamp. TIMESTAMP values are stored as the number of seconds since
the Unix epoch ('1970-01-01 00:00:00' UTC). Format: YYYY-MM-DD
HH:MM:SSNote: The supported range is from '1970-01-01 00:00:01' UTC to
'2038-01-09 03:14:07' UTC
TIME() A time. Format: HH:MM:SSNote: The supported range is from '-838:59:59' to
'838:59:59'
YEAR() A year in two-digit or four-digit format.Note: Values allowed in four-digit
format: 1901 to 2155. Values allowed in two-digit format: 70 to 69,
representing years from 1970 to 2069
http://www.w3schools.com/sql/sql_datatypes.asp
27. SUMMARY
• Concept of databases
• Tables and Fields
• Field Types
• phpMyAdmin Tool for manipulating databases
• Creation of a database
• How to add and edit records
• How to back-up a database
• Database Design
28.
29. CONNECTING TO A MYSQL DBMS
• In order for our PHP script to access a
database we need to form a connection
from the script to the database
management system.
resourceId = mysql_connect(server, username, password);
• Server is the DBMS server
• username is your username
• password is your password
30. CONNECTING TO A MYSQL DBMS
• In order for our PHP script to access a
database we need to form a connection
from the script to the database
management system.
resourceId = mysql_connect(server, username, password);
• The function returns a resource-identifier type.
• a PHP script can connect to a DBMS anywhere in the world,
so long as it is connected to the internet.
• we can also connect to multiple DBMS at the same time.
31. SELECTING A DATABASE
• Once connected to a DBMS, we can
select a database.
mysql_select_db(databasename, resourceId);
• the resourceId is the one returned by mysql_connect()
• the function returns true if the selection succeeded; false,
otherwise.
32. EXAMPLE: CONNECT TO A DBMS AND
ACCESS DATABASE
<?php
$dbLocalhost = mysql_connect("localhost", "root", "")
or die("Could not connect: " . mysql_error());
mysql_select_db("glassesrus", $dbLocalhost)
or die("Could not find database: " . mysql_error());
echo "<h1>Connected To Database</h1>";
?>
• die() stops execution of script if the database connection
attempt failed.
• mysql_error() returns an error message from the previous
MYSQL operation.
33. READING FROM A DATABASE
• We can now send an SQL query to the
database to retrieve some data records.
resourceRecords = mysql_query(query, resourceId);
• the resourceId is the one returned by mysql_connect()
• the function returns a resource identifier to the returned data.
34. EXAMPLE: CONNECT TO A DBMS,
ACCESS DATABASE, SEND QUERY
<?php
$dbLocalhost = mysql_connect("localhost", "root", "")
or die("Could not connect: " . mysql_error());
mysql_select_db("glassesrus", $dbLocalhost)
or die("Could not find database: " . mysql_error());
$dbRecords = mysql_query("SELECT * FROM customers", $dbLocalhost)
or die("Problem reading table: " . mysql_error());
echo "<h1>Connected To Database</h1>";
?>
• the function will return a resource pointer (not the actual
data) to all the records that match the query.
• If all goes well, this script will output nothing on screen.
35. EXTRACT CONTENTS OF ONE RECORD
• We can now extract the actual data from
the resource pointer returned by
mysql_query().
fieldData= mysql_result(resourceRecords, row, field);
• the resourceRecords is the one returned by mysql_query()
• field – database field to return
• the function returns the data stored in the field.
36. EXAMPLE: CONNECT TO A DBMS,
ACCESS DATABASE, SEND QUERY
<?php
$dbLocalhost = mysql_connect("localhost", "root", "")
or die("Could not connect: " . mysql_error());
mysql_select_db("glassesrus", $dbLocalhost)
or die("Could not find database: " . mysql_error());
$dbRecords = mysql_query("SELECT * FROM customers", $dbLocalhost)
or die("Problem reading table: " . mysql_error());
$strSurname = mysql_result($dbRecords, 0, "Surname");
echo "<p>$strSurname</p>";
?>
• the function will return a resource pointer (not the actual
data) to all the records that match the query.
• If all goes well, this script will output a surname on screen.
37. SQL STATEMENT
SELECT * FROM customers
• Go and obtain from the database
• every field
• FROM the
• customers table
38. SEPARATING THE DATABASE
CONNECTION
It is worth separating the database
connectivity from our scripts and placing
it in a separate file.
•It provides a convenient means of moving your scripts from
one database platform to another.
39. EXAMPLE: SEPARATING THE
DATABASE CONNECTION
<?php
// File: database2.php
$strLocation = "Home";
//$strLocation = "Work";
if ($strLocation == "Home") {
$dbLocalhost = mysql_connect("localhost", "root", "")
or die("Could not connect: " . mysql_error());
mysql_select_db("glassesrus", $dbLocalhost)
or die("Could not find database: " . mysql_error());
} else {
$dbLocalhost = mysql_connect("localhost", "username", "password")
or die("Could not connect: " . mysql_error());
mysql_select_db("anotherdatabase", $dbLocalhost)
or die("Could not find database: " . mysql_error());
}
?>
• $strLocation could be easily switched between ‘Home’ or ‘Work’
40. VIEWING A WHOLE RECORD
To view the whole record returned from
mysql_query(), we need another
function...
• resourceRecords – resource identifier returned from
mysql_query().
• it returns an array containing the database record.
array = mysql_fetch_row(resourceRecords)
41. EXAMPLE: DISPLAYING ALL
CUSTOMER RECORDS
<?php
require_once("database2.php");
$dbRecords = mysql_query("SELECT * FROM customers", $dbLocalhost)
or die("Problem reading table: " . mysql_error());
while ($arrRecord = mysql_fetch_row($dbRecords)) {
echo "<p>" . $arrRecord[0] . " ";
echo $arrRecord[1] . " ";
echo $arrRecord[2] . " ";
echo $arrRecord[3] . "</p>";
}
?>
• The function returns false when the last record is returned; thus, stopping
the loop.
• Note, however, that the fields are referred to by using numbers – not very
easy to read and mistakes can be introduced.
42. LIMITING THE RECORDS RETURNED
SELECT Surname FROM customers
•Retrieves only the Surname field from the table customers
43. LIMITING THE RECORDS RETURNED
SELECT * FROM customers LIMIT 3,4
• Select a certain number of records form a table
• 3 is the starting row
• 4 is the number of records to be selected after the starting
row
44. SEARCHING FOR MATCHING
RECORDSSELECT * FROM customers WHERE Title=‘Mr’
•The WHERE attribute specifies what to search for within the
database records.
• in this example, only records which have a title of ‘Mr’ will be
returned.
45. SEARCHING FOR MATCHING
RECORDSSELECT * FROM customers WHERE Title=‘Mr’
OR Title=‘Mrs’
•The WHERE attribute specifies what to search for within the
database records.
• in this example, only records which have a title of ‘Mr’ or
‘Mrs’ will be returned.
• we can also use AND and OR to formulate more
sophisticated conditions.
•
46. SEARCHING FOR MATCHING
RECORDSSELECT * FROM customers WHERE Title=‘Mr’
AND Surname=‘Smith’ OR Title=‘Mrs’
•The WHERE attribute specifies what to search for within the
database records.
• in this example, only records which have a surname of ‘Smith
and title of ‘Mr’ or the title of ‘Mrs’ will be returned.
• we can also use AND and OR to formulate more
sophisticated conditions.
•
47. SORTING RECORDS
The ORDER BY attribute can be used to sort
the order in which records are obtained.
• the ORDER BY attribute is followed by the data field on
which to sort the record
• DESC or ASC – from high to low, or from low to high
SELECT * FROM cutomers ORDER BY Surname DESC
Example15-12.php
50. USING RECORDS TO READ ANOTHER
TABLERead a customer record, and then show the
products purchased by that customer.
Tables
• Customers
• Products
• Purchases
• PurchaseProducts
Example15-14.php
51. USING RECORDS TO READ ANOTHER
TABLE
Example15-14.php
...
$strSurname = "Jones";
$dbCustRecords = mysql_query("SELECT * FROM customers WHERE Surname = '$strSurname' ",...)
while ($arrCustRecords = mysql_fetch_array($dbCustRecords)) { //#1
$intId = $arrCustRecords["Id"];
//display customer’s details
$dbPurRecords = mysql_query("SELECT * FROM purchases WHERE customers_Id = '$intId'", ...)
while ($arrPurRecords = mysql_fetch_array($dbPurRecords)) {//#2
$intPurId = $arrPurRecords["Id"];
//display purchase date
$dbProRecords=mysql_query("SELECT * FROM purchaseProducts WHERE purchases_Id='$intPurId' ",..)
while ($arrProRecords = mysql_fetch_array($dbProRecords)) { //#3
$intProductId = $arrProRecords["products_Id"];
//display Quantity
$dbProductRecords = mysql_query("SELECT * FROM products WHERE Id = '$intProductId'",..)
$arrProductRecord = mysql_fetch_array($dbProductRecords);
//display product details
} #3
} #2
} //#1
BIRD’S EYEVIEW
52. USING RECORDS TO READ ANOTHER
TABLE
Example15-14.php
<?php
require_once("database2.php");
$strSurname = "Jones";
$dbCustRecords = mysql_query("SELECT * FROM customers WHERE Surname = '$strSurname'
", $dbLocalhost)
or die("Problem reading table: " . mysql_error());
while ($arrCustRecords = mysql_fetch_array($dbCustRecords)) {
$intId = $arrCustRecords["Id"];
echo "<p>Customer: ";
echo $arrCustRecords["Title"] . " ";
echo $arrCustRecords["Surname"] . " ";
echo $arrCustRecords["Firstname"] . "</p>";
$dbPurRecords = mysql_query("SELECT * FROM purchases WHERE customers_Id = '$intId'",
$dbLocalhost)
or die("Problem reading table: " . mysql_error());
Complete version
53. USING RECORDS TO READ ANOTHER
TABLE
Example15-14.php
while ($arrPurRecords = mysql_fetch_array($dbPurRecords)) {
$intPurId = $arrPurRecords["Id"];
echo "<p>Purchased On: ";
echo $arrPurRecords["Day"] . "/";
echo $arrPurRecords["Month"] . "/";
echo $arrPurRecords["Year"] . "</p>";
$dbProRecords= mysql_query("SELECT * FROM purchaseProducts WHERE purchases_Id='$intPurId' ",
$dbLocalhost)
or die("Problem reading table: " . mysql_error());
while ($arrProRecords = mysql_fetch_array($dbProRecords)) {
$intProductId = $arrProRecords["products_Id"];
echo "<p>" . $arrProRecords["Quantity"] . " ";
$dbProductRecords = mysql_query("SELECT * FROM products WHERE Id = '$intProductId'",
$dbLocalhost)
or die("Problem reading table: " . mysql_error());
$arrProductRecord = mysql_fetch_array($dbProductRecords);
echo $arrProductRecord["Name"] . " (" . $arrProductRecord["Description"] . ") at £";
echo $arrProRecords["Cost"] . " each.</p>";
}
}
}
?>
Example15-14.php
Complete version
54. INSERTING RECORDS
How to create new database records and insert
them into a table?
INSERT INTO table (field1, field2,...) VALUES (‘value1’, ‘value2’,...)
Example15-15.php
INSERT INTO table VALUES (‘value1’, ‘value2’,...)
•Alternatively, we have a simplified syntax:
$dbProdRecords = mysql_query("INSERT INTO products
VALUES ( ' ', 'Beer Mug', '600 ml Beer Mug', '100', '5.99')",
$dbLocalhost)
56. DELETING RECORDS
How to delete database records from tables?
DELETE FROM table WHERE field=‘value’
Example15-16.php
e.g.
$dbCustRecords = mysql_query("DELETE FROM customers
WHERE Id='3'", $dbLocalhost)
Note: If you have a relational database, you should tidy-up the other tables, based on
their connection with the record you’ve deleted.
57. DELETING RECORDS
How to delete database records from tables?
DELETE FROM table
Example15-17.php
This will delete all records from a table!
Note: back-up your database first!
58. AMENDING RECORDS
How to modify the contents of an existing
database record?
UPDATE table SET field=‘value1’, field=‘value2’...WHERE
field=‘value’
Example15-18.php
• requires you to specify the table, the list of fields with their
updated values, and a condition for selection (WHERE).
59. AMENDING RECORDS
Example15-14.php
<?php
// File: example15-18.php
require_once("database2.php");
$dbCustRecords = mysql_query("UPDATE products SET Description='250 ml Tall
Glass' WHERE Id='6'", $dbLocalhost)
or die("Problem updating table: " . mysql_error());
$dbProdRecords = mysql_query("SELECT * FROM products", $dbLocalhost)
or die("Problem reading table: " . mysql_error());
while ($arrProdRecords = mysql_fetch_array($dbProdRecords)) {
echo "<p>" . $arrProdRecords["Id"] . " ";
echo $arrProdRecords["Name"] . " ";
echo $arrProdRecords["Description"] . " ";
echo $arrProdRecords["Quantity"] . " ";
echo $arrProdRecords["Cost"] . "</p>";
}
?> Example15-18.php
60. AMENDING RECORDS
How to modify the contents of an existing
database record?
$dbCustRecords = mysql_query("UPDATE products SET Name='Beer
and Lager Glass' WHERE Name='Beer Glass'", $dbLocalhost)
Example15-19.php
•A number of records will be updated in this example.
Another Example:
UPDATE table SET field=‘value1’, field=‘value2’...WHERE
field=‘value’
61. COUNTING THE NUMBER OF RECORDS
How to count the number of records after
running a query?
$dbProdRecords = mysql_query("SELECT * FROM products",
$dbLocalhost)
or die("Problem reading table: " . mysql_error());
$intProductCount = mysql_num_rows($dbProdRecords);
Example15-20.php
• you can also use the same function to determine if a record
exists.
Example15-21.php
62. SELECT A SUBSTRING
How to count the number of records after
running a query?
SELECT * FROM products WHERE substring(Name,1,4)=‘Wine’
•This will return all records from the products table where the
first four characters in the name field equals ‘Wine’
Example15-22.php