技术开发 频道

专家解析:三大重要的MySQL查询

 

  【IT168 技术】你几乎可以在网络上随处看到动态网站。无论用于博客还是电子商务的数据包都配置了动态属性。动态网站依赖MySQL数据库从浏览器中提取和插入数据。

  如果你是个初学者,了解下面的简单图解会有助于你理解MySQL在现在的动态网站中所起的作用。在传统的简单静态网站中,你可能会看到如下事件:客户浏览器向服务器请求信息→服务器向浏览器返回HTML代码→浏览器会显示HTML,该HTML就成为了一个网页。而现在,动态网站按如下步骤进行:

  1:请求网页;

  2:服务器执行PHP脚本;

  3:MySQL查询:请求来自SQL的数据;

  4:SQL返回数据;

  5:服务器返回HTML页面。

  客户端浏览器请求一个网页,当服务器收到请求的时候,网页模板执行了PHP脚本,该脚本从MySQL处获取了信息。这些信息会被添加到页面模板中,然后返回到浏览器作为HTML。当你查看源代码的时候,就不会再坎肩PHP脚本了,因为已经在服务器中执行了这些脚本。

  使用动态网页时,可以仅用保存的唯一服务器PHP模板创建上千个URL链接。但是在静态模板中,则需要在服务器中保存上千个HTML文件以创建上千个URL链接。

  如果你了解最重要的MySQL(MySQL五大类参数设置)查询,那么就会很容易和数据库进行沟通,由此便可以创建复杂的PHP网络应用。这样做既可以节约你的时间又能够增加网页效率。在这篇文章中,我们将用INSERT,SELECT和UPDATE命令阐述将要查询MySQL数据库的PHP脚本。

  INSERT MySQL查询命令

  在我们从数据库抓取数据之前,先必须知道如何插入数据。假设你已经创建了带有表格名称的数据库,那么可以用INSERT SQL命令来完成数据插入。我们已经在下面给出了示例。假设你正同时向MySQL数据库的三个不同域中插入三条数据,它看起来:

  INSERT INTO `tablename` (`fieldname1`,`fieldname2`,``,`fieldname3`) VALUES('$datatobeinsertedtofieldname1','$datatobeinsertedtofieldname2',

  
'$datatobeinsertedtofieldname3'

 

  用PHP来使用这一查询时,要留意引用符合的确切使用情况和域名及变量的准确拼写。这是PHP编程中常见的错误。

  注意表格名称和查询命令中的域名应该和(`)一起使用,你还要在真实MySQL表格名和脚本表格名之间保持一致性。这样可以区分Linux/PHP和MySQL环境中共同存在的一些东西。

  例如:如果你的表格名称为SongArchives,同样也使用:

  INSERT INTO `SongArchives` .....

 

  最后,用INSERT命令规划一个完整的MySQL查询,下面就是我们推荐的脚本:

< ?php
  
//Step 1 Connect to database

  
$username = "Your MySQL username here";

  
$password = "Your MySQL password";

  
$hostname = "Hostname";

  
$table = "MySQL Table name where the data will be inserted";

  
$database = "The name of the MySQL database which holds the table";

  
$dbhandle = mysql_connect($hostname, $username, $password)

  or
die("Unable to connect to MySQL");

  
$selected = mysql_select_db($database,$dbhandle)

  or
die("Could not select $database");

  
//Step 2. Insert other PHP scripts here (such as grabbing data from HTML forms, etc)

  //Step 3. Sanitize variables before inserting to database. This will prevent MySQL injection.


  
$datatobeinsertedtofieldname1 = mysql_real_escape_string(stripslashes($datatobeinsertedtofieldname1));

  
$datatobeinsertedtofieldname2 = mysql_real_escape_string(stripslashes($datatobeinsertedtofieldname2));

  
$datatobeinsertedtofieldname3 = mysql_real_escape_string(stripslashes($datatobeinsertedtofieldname3));

  
mysql_query("INSERT INTO `tablename` (`fieldname1`,`fieldname2`,``,`fieldname3`) VALUES('$datatobeinsertedtofieldname1','$datatobeinsertedtofieldname2',

  '
$datatobeinsertedtofieldname3')")

  or
die(mysql_error());

  
?>

 

  SELECT MySQL查询命令

  现在数据库中已经有了数据。如果我们要从中获取数据,我们需要SELECT命令。抓取数据的选择有多个。

  第一, 从数据库中抓取整个数据表

  SELECT * FROM `tablename`

 

  这里的PHP脚本用来解释这一示例。该脚本将整个MySQL数据包抓取出来并将其显示在你的浏览器中。

      < ?php
  
//Step 1 Connect to database

  
$username = "Your MySQL username here";

  
$password = "Your MySQL password";

  
$hostname = "Hostname";

  
$table = "MySQL Table name where the data will be inserted";

  
$database = "The name of the MySQL database which holds the table";

  
$dbhandle = mysql_connect($hostname, $username, $password)

  or
die("Unable to connect to MySQL");

  
$selected = mysql_select_db($database,$dbhandle)

  or
die("Could not select $database");

  
//Step 2. Insert other PHP scripts here (such as grabbing data from HTML forms, etc)

  //Step 3. Sanitize variables before inserting to database. This will prevent MySQL injection.


  
$categories_id = mysql_real_escape_string(stripslashes($categories_id));

  
$language_id = mysql_real_escape_string(stripslashes($language_id));

  
$categories_name = mysql_real_escape_string(stripslashes($categories_name));

  
$result = mysql_query("SELECT * FROM `categories_description`")

  or
die(mysql_error());

  
echo '< table border="1">';

  
echo '< tr>';

  
echo '< td>< b>Categories ID< /b>< /td>';

  
echo '< td>< b>Language ID< /b>< /td>';

  
echo '< td>< b>Categories Name< /b>< /td>';

  
echo '< /tr>';

  
while($row = mysql_fetch_array($result)){

  
echo '< tr>';

  
echo '< td>'.$row['categories_id'].'< /td>';

  
echo '< td>'.$row['language_id'].'< /td>';

  
echo '< td>'.$row['categories_name'].'< /td>';

  
echo '< /tr>';

  }

  
echo '< /table>';

  
?>

 

  这样在HTML浏览器中会显示出该表格,像这样:

  第二种是从MySQL表格的指定域名中提取指定数据。当你需要从满足特定条件的指定域名中提取指定数据的时候,如:我们需要提取客户邮件地址的时候如果他们也能准确提供用户名和密码。那么在表格中就存在三个域:用户名,密码,电子邮件地址。那么要在MySQL表格中提取客户电子邮件地址,PHP查询可以是:

  在PHP MySQL查询中,WHERE陈述指定了邮件地址匹配特定用户名和密码的条件。

  你可以用一些AND语句来查询MySQL。

     < ?php
  
//Connect to database...

  //Sanitize the variables..

  //MySQL query


  
$result = mysql_query("SELECT `emailaddress` FROM `customertable` WHERE `username`='$username' AND `password`='$password'")

  or
die(mysql_error());

  
$row = mysql_fetch_array($result)

  or
die("Invalid query: " . mysql_error());

  
$emailaddress = $row['emailaddress'];

  
echo "Your email address is: $emailaddress";

  
?>

 

  UPDATE MySQL查询命令

  PHP中最重要的MySQL查询之一还有UPDATE。如命令所示,它可以让你更新MySQL表格中的记录,而不需要再次插入一行。

  例如,假设你拥有下表:

  假设Peter Patter要将密码从"logan"改成"weaponx",那么使用UPDATE的MySQL查询应该是:

      < ?php
  
//Step 1 Connect to database

  
$username = "yourusername";

  
$password = "yoursqlpassword";

  
$hostname = "localhost";

  
$table = "usertable";

  
$database = "userdatabase";

  
$dbhandle = mysql_connect($hostname, $username, $password)

  or
die("Unable to connect to MySQL");

  
$selected = mysql_select_db($database,$dbhandle)

  or
die("Could not select $database");

  
//Initial variables

  
$username = 'wolverine';

  
$fullname = 'Peter Patter';

  
//Set new password for Peter Patter

  
$newpassword = 'weaponx';

  
//sanitize

  
$newpassword = mysql_real_escape_string(stripslashes($newpassword));

  
$username = mysql_real_escape_string(stripslashes($username));

  
$fullname = mysql_real_escape_string(stripslashes($fullname));

  
//Update records in MySQL database

  
mysql_query("UPDATE usertable SET password = '$newpassword' WHERE username = '$username' AND fullname = '$fullname'")

  or
die(mysql_error());

  
echo 'The database has been updated. Thank you';

  
?>

 

  上面的更新脚本会将Peter Patter的密码从 "logan"改成"weaponx"。上面的脚本只是一个示范,你可以用上面的脚本和HTML表单结合,这样可以创建更多的互动性更新数据。

0
相关文章