我想在PHP中创建一个函数,使用mysql从我的browsergame获取并设置一个stat数据库。
include ("connection.php");
function getstat($user_id)
{
}
function setstat($user_id)
{
}
所以我在我的数据库中有一个存储统计数据的表,所以stat_id必须等于变量$ user_id所以对我而言,有人可以帮忙吗?
答案 0 :(得分:1)
这真的不是那么复杂,所以我强烈建议学习一些SQL。有关该主题的w3schools有一些非常基础的课程,所以检查出来。当然不要停留在w3schools,但这是一个了解主题的好方法。
为了快速参考,这里是与mysqli的连接设置;
$con = new mysqli('database','username','password','database');
那就是说,让我们来看看一些问题。
首先,我假设你的连接代码已经设置了一个mysqli连接供我们使用,我也假设你有api docs方便mysqli,并且autocommit打开,所以我们不是'处理交易(初学者想要远离真实的东西)
让我们插入一个数据
//首先,在getstat($ id)
中查看用户是否存在if(getstat($id) !== false){//a user was found via getstat($id), note the type check
$stmt = $con->prepare('UPDATE `stat_table` SET=stat_user WHERE id=:id');
}
else{
$stmt = $conf->prepare('INSERT INTO `stat_table` VALUES('','users name','some other column value');
}
$stmt->bind_param('n',':id');
$stmt->execute();
$stmt->close();
//现在,让我们实现getstat,这将是相当简单的
$stmt = $con->prepare('SELECT * FROM `stat_table` WHERE id=:id');
$stmt->bind_param('n',':id');
$stmt->execute();
if($stmt->num_rows == 1){//user exists and here is the data!!
$stmt->bind_result($id,$users_name,$some_other_value);//one variable for each column returned
$result_row = $stmt->fetch();
printf('id: %n and user_name: %s and some_other_value: %s\n',$id,$users_name,$some_other_value);
$stmt->close();//don't leave me hangin guys
return $result_row;//because the user exists and we output their info! Yay!! We're also going to return the row as an object so that whoever called this function can use the data. Since this is non null a simple if($result_row) will return true.
} else { //nope, user doesn't exist (0 rows returned), so we need to inform the system
return false;//this is why setstat has a type check in it, since we can return two types of data, one object, one boolean.
}
注意:此代码假定无错误执行,并且您可以使用mysqli api文档并且可以阅读它们。它也可能包含语法和用法错误,因为我写得相当快:)
说明:我们在这里做的是概述SQL中一些非常常见的操作。首先,我们需要使用SELECT语句根据ID获取一行数据。出于安全原因,我们将使用预准备的语句对象来替换ID中的潜在恶意代码,并为查找添加一个干净的数字。
然后,基于此,我们将要么运行UPDATE语句将stat设置为新值,要么运行INSERT语句以实际添加该行和stat。这一切都使用预处理语句,如果您是SQL和数据库系统的新手,您可能会发现它有点高级,但出于安全考虑,这些语句非常重要。查看api并在维基百科上阅读它们。
那么,为什么这本书的答案呢?坦率地说,你似乎没有牢牢掌握SQL“语言”(我在引号中加入,因为它在不同DBMS中的使用略有不同),我们在这里学习。所以,不是只为你编写代码,我确实想给你一些解释,即使已经回答了这个问题:)
我希望现在和未来的努力都有所帮助!
答案 1 :(得分:-2)
这是一个带有 mysql _ 函数的示例(但是你需要用mysqli实现它,mysql_ *函数被删除并且将被弃用):
function getstat($user_id)
{
$result = mysql_query("SELECT * FROM user_stats WHERE stat_id=".mysql_real_scape_string($user_id));
$row = mysql_fetch_array($result);
return $row['fieldNeeded'];
}
在第二个函数中,您还需要传递第二个var并使用新的stat值。
function setstat($user_id, $newValue)
{
mysql_query("UPDATE user_stats SET fieldUpdated=".mysql_real_scape_string(newValue)." WHERE stat_id=".mysql_real_scape_string($user_id));
}