这真的不是那么复杂,所以我强烈建议学习一些 SQL。 w3schools 上有一些关于这个主题的非常基础的课程,所以请查看它们。当然,不要停留在 w3schools 上,但这是了解主题的好方法。
为了快速参考,这里是一个 mysqli 的连接设置;
$con = new mysqli('database','username','password','database');
也就是说,让我们看一些查询。
首先,我假设您的连接代码已经设置了一个 mysqli 连接供我们使用,我还假设您有方便 mysqli 的 api 文档,并打开了自动提交以便我们t 处理交易(初学者真的想远离的事情)
让我们插入一个统计数据
//先看用户是否存在,在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 并在 wikipedia 上阅读它们。
那么,为什么是答案之书?坦率地说,您似乎没有牢牢掌握 SQL“语言”(我把它放在引号中,因为它在不同的 DBMS 中的用法略有不同),我们在这里学习。所以,我不只是为你编写代码,而是想给你一些解释,即使这已经得到了回答:)
我希望这对您现在以及您未来的努力有所帮助!