gpt4 book ai didi

php - 我的代码应该每个 $age 变量的值,但它却回显单词 "age"?

转载 作者:行者123 更新时间:2023-11-29 06:06:59 25 4
gpt4 key购买 nike

这是我正在使用的代码:

<?php
// Set the MySQL Configuration
$db_host = "";
$db_user = "";
$db_password = "";
$db_name = "";
$db_table = "";

// Start Connection
$db_connect = mysql_connect ($db_host, $db_user, $db_password);

// Select Database
$db_select = mysql_select_db ($db_name, $db_connect);

// Update Values in Database


$query = "UPDATE $db_table SET

age = age + 1,

land = '".$_POST['data3']."'

WHERE name = '".$_POST['data1']."'

";


// Execution MySQL query
$result = mysql_query($query) or die(mysql_error($db_connect));

//Close MySQL connection
mysql_close($db_connect);

//HTTP Response
echo " your age: age";

?>

我想回显 $age 变量的值,但我总是得到“age”这个词。例如,代码应该回显 yourage: 5,但它会输出 yourage:age

最佳答案

首先,您需要运行 SELECT 查询来检索 age 的更新值。查询应如下所示:

"SELECT age FROM db_table_name WHERE name = ?"

获得该查询的结果后,使用 PDO::fetch (请参阅下面关于 PDO 的注释)并将其设置为变量 $age ,可以用echo语句输出:

echo "Your age: $age";

此外,请不要在新代码中使用 mysql_* 函数。它们不再维护,社区已开始 deprecation process (参见red box)。相反,您应该了解 prepared statements并使用 PDOMySQLi 。如果您无法决定哪个,this article会帮助你。如果你想学习,this is a good PDO tutorial .

我没有向您提供具体代码的原因是因为它根本不应该使用 mysql_* 函数来完成。。像这样直接使用来自 $_POST 的数据创建 SQL 查询是极其危险的代码,而且是一个极其糟糕的主意。切勿这样做。您将面临大量 SQL 注入(inject)攻击。即使使用 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");
?>

所有这些信息都直接来自 prepared statements 上的 PHP 文档。和 PDO::fetchColumn() .

关于php - 我的代码应该每个 $age 变量的值,但它却回显单词 "age"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11092709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com