首页 > 解决方案 > 从 MySQL 获取价值,并将它们放入其他表中(一次多个值)

问题描述

首先,是的,我知道 PHP5.6 是不推荐使用的版本,但我想坚持使用它并为自己全面学习 PHP,然后再更新到 MySQLi。

我正在尝试制作一个运行 MySQL 和 PHP 的基于文本的游戏,目前正在尝试创建一个系统:

1.从用户表、用户名和完成的总操作中获取信息 (+)

2.在某些时间戳将所有用户名和操作保存到单独的表中(-)

3.将所有玩家的动作栏重置为0。(+/- 计划使用 mysql 触发器和/或 cron-job)

我的问题:

2)您如何建议我将用户名插入单独的表中?(我想出的唯一想法是爆炸数组以某种方式获取变量并汇总到mysql,问题是如何做到这一点?)

3)关于这个数字 3,你会建议其他东西然后触发器或 cron-jobs 吗?

代码示例如下

<?php
include './config/connect-db.php';
$result= mysql_query("SELECT * FROM user WHERE actions > 100 ORDER BY 
actions DESC LIMIT 5");

while($row = mysql_fetch_array($result)){
if ($row['u_dmisijos'] >= 100) {
    echo '<li>'.$row["u_name"].' ('.$row["actions"].')<br>';
 }  // if actions
} //while loop
?>

编辑:MySQL 包含很多列,我只关注 2 个特定的列,u_name(用户名)和操作(操作)。

EDIT2:我在第二张桌子上的期望:ID(AI),具有最多动作点的玩家的用户名,具有第二个动作点的玩家的用户名等。还有Datastamp。

预期的 SQL ID、nr1、nr2、nr3、nr4、nr5、Datastamp。

干杯!

标签: phpmysqlphp-5.6

解决方案


我不确定这是否有效,因为我没有测试过。但是,我希望你能得到一个大致的概念。

 <?php 

    $conn = mysql_connect("localhost", "mysql_user", "mysql_password");

    if (!$conn) {
        echo "Unable to connect to DB: " . mysql_error();
        exit;
    }

    if (!mysql_select_db("mydbname")) {
        echo "Unable to select mydbname: " . mysql_error();
        exit;
    }

    $sql = "SELECT * FROM user WHERE actions > 100 ORDER BY actions DESC LIMIT 5";

    $result = mysql_query($sql);

    if (!$result) {
        echo "Could not successfully run query ($sql) from DB: " . mysql_error();
        exit;
    }

    if (mysql_num_rows($result) == 0) {
        echo "No rows found, nothing to print so am exiting";
        exit;
    }

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

        $q = "INSERT INTO `new_table` (`u_name`, `actions`) VALUES 
                ($row['u_name'],$row['actions'] )";

        mysql_query($q);

    }

    ?>

关于重置所有操作,0您可以创建如下功能:

function resetActions(){
    //update actions to 0
    $q = "UPDATE table_name SET actions = 0";
    mysql_query($q);
}

现在,每当您需要重置它时,您都可以调用此函数。或者您可以根据需要在 cron 作业中调用此函数。


推荐阅读