首先,您需要运行SELECT
查询来检索age
. 查询应如下所示:
"SELECT age FROM db_table_name WHERE name = ?"
一旦您获得了该查询的结果,使用 say PDO::fetch
(请参阅下面关于 PDO 的注释)并将其设置为变量$age
,您可以使用 echo 语句输出它:
echo "Your age: $age";
另外,请不要将mysql_*
函数用于新代码。它们不再被维护,社区已经开始弃用过程(见红框)。相反,您应该了解准备好的语句并使用PDO或MySQLi。如果你不能决定哪个,这篇文章会帮助你。如果您想学习,这是一个很好的 PDO 教程。
我没有给你确切的代码的原因是因为它根本不应该用mysql_*
函数来完成。$_POST
像这样直接使用数据创建 SQL 查询是非常危险的代码,并且是一个非常糟糕的主意。永远不要这样做。您向无数 SQL 注入攻击敞开大门。即使使用mysql_real_escape_string
也不够。您应该使用准备好的语句。
更新:这是一个简单的例子,它接近你的要求,但使用 PDO 和准备好的语句。这绝不是一个全面的例子,因为有几种改变它的方法仍然有效(例如,准备好的语句允许您在一个语句中在服务器上执行多个语句),而且我没有工作服务器测试的时刻,以确保它正是你所需要的,但我希望它能够得到理解。
<?php
// Create the database connection
$db = new PDO('mysql:host=localhost;dbname=testdb;charset=UTF-8', 'username', 'password');
// Set PDO/MySQL to use real prepared statements instead of emulating them
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
// The UPDATE query we're going to use
$update_query = "UPDATE `db_table_name` SET age = age + 1, land = :land WHERE name = :name";
// Prepare the query
$stmt = $db->prepare($update_query);
// Bind variables to the named parameters in the query with their values from $_POST
$land = $_POST['data3'];
$name = $_POST['data1']
$stmt->bindParam(':land', $land);
$stmt->bindParam(':name', $name);
// Execute the statement on the server
$stmt->execute();
// The SELECT query we're going to use
$select_query = "SELECT age FROM `db_table_name` WHERE name = :name";
// Again, prepare the query
$stmt_select = $db->prepare($select_query);
// Bind the paramters (in this case only one) to the new statement
// $name is already set from before, so there is no need to set it again
$stmt_select->bindParam(":name", $name);
$stmt_select->execute();
/*
* With no arguments, PDO::fetchColumn() returns the first column
* in the current row of the result set. Otherwise, fetchColumn()
* takes a 0-indexed number of the column you wish to retrieve
* from the row.
*/
$age = $stmt_select->fetchColumn();
echo("Your age: $age");
?>
所有这些信息都直接来自关于准备好的语句和PDO::fetchColumn()的 PHP 文档。