【问题标题】:Getting value from MySQL, and putting them into other table (multiple values at once)从 MySQL 获取价值,并将它们放入其他表中(一次多个值)
【发布时间】:2019-06-20 18:29:52
【问题描述】:

首先,是的,我知道 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(用户名)和操作(操作)。

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

预期的 SQL ID、nr1、nr2、nr3、nr4、nr5、数据戳。

干杯!

【问题讨论】:

  • 为什么要学习将来会出错的东西?所有mysql_ 功能都已消失,此时学习它们是在浪费您的时间。 mysqli 在 5.6 中也可用。
  • 感谢您的回答,但这无济于事。带着问题。

标签: php mysql php-5.6


【解决方案1】:

我不确定这是否可行,因为我还没有测试过。但是,我希望您能大致了解一下。

 <?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 作业中调用此函数。

【讨论】:

  • 非常感谢您的回答。将代码插入其他表不起作用,它没有给出错误,但它没有任何东西进入表本身(是的,我配置了连接,甚至在 SQL 中分离了固定变量以使其工作。)。重置代码效果惊人!再次感谢您:)
  • 我不明白。您是否解决了插入新表的问题?你尝试了什么,你的错误是什么?
  • 我没有解决问题。代码仍然没有将任何信息放入新表中。我试图通过我拥有的表修改名称,并将变量从 SQL (".$var.") 中分离出来,否则我得到语法错误,意外的 ".
  • ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); 将此代码放在connect-db.php 的顶部,让我知道错误是什么。另外,不要忘记显示您的插入代码
  • 我正在运行您的原始脚本,只是更改了与数据库的连接。我没有在该文件中使用包含。放置代码后,没有任何变化,没有错误出现,也没有任何内容添加到数据库中。
猜你喜欢
  • 2011-09-03
  • 2016-04-16
  • 2020-05-09
  • 1970-01-01
  • 1970-01-01
  • 2014-02-08
  • 2017-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多