无法从 php 网站获取 mysql db 进行更新 xubuntu 22.04-mysql 8..0.3 php 7.4.30

无法从 php 网站获取 mysql db 进行更新 xubuntu 22.04-mysql 8..0.3 php 7.4.30

我对代码不太在行,基本上就是在没有完全理解代码的情况下复制和修改代码来达到我的目的。现在我在尝试创建一个允许我更新数据库中的一个条目的网页时遇到了问题。

在此处输入图片描述

其中很多内容取自原始程序(SAM Broadcaster)。这是我提出的代码,但它没有结果,而且我也没有看到任何错误来帮助我找出错误所在。

分类歌曲.php

.....snip....... public static function getRequestedSong($requestID) {
    $db = Database::getInstance();
    try {
        $select = $db->select()
                     ->from(array('s' => 'songlist'),
                            array('s.*',
                                  'songID' => 's.ID',
                                  'requestID' => 'r.ID',))
                        ->join(array('r' => 'requestlist'),
                                     's.ID = r.songID',
                                     array('dedicationName' => 'name',
                                           'dedicationMessage' => 'msg'))
                        ->where('r.ID = ?', $requestID);

        $row = $db->fetchRow($select);
        if (!is_null($row)) {
            $song = new self();
            $song->setValues($row);
        }
    } catch (Zend_Db_Adapter_Exception $ex) {
        echo "Please verify database settings.<br />";
        exit;
    }
    return $song;
}

public function setRaiseWeight() {
    //Increase Song Weight 
    $query = "UPDATE samdb.songlist SET weight = (weight + 1) WHERE (ID = $currentSong->ID)";
    Db::getInstance()->Execute($query);
          
}

public function setLowerWeight() {
    //Lower Song Weight 
    $query = "UPDATE samdb.songlist SET weight = (weight - 1) WHERE (ID = $currentSong->ID)";
    Db::getInstance()->Execute($query);           
}

public function setValues($songinfo) {
    $properties = get_class_vars(get_class($this));
    $methods = get_class_methods($this);
    unset($methods[array_search('setValues', $methods)]);.........snip......

显示.播放.php

            ....snip..... <br />
                                 <br />
                                 Track requested by <span id="dedication-name">"<?php echo $currentSong->dedicationName; ?>"</span>
                                     <?php if(!empty($currentSong->dedicationMessage)) : ?>
                                        with message <span id="dedication-message">"<?php echo $currentSong->dedicationMessage; ?>"</span>
                                     <?php endif; ?>
                                <!-- END:DEDICATION -->
                                <?php endif; ?>
                                <br />
                                <br />
                                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Play Weight Status:
                                <br />&nbsp;&nbsp;&nbsp;&nbsp;
                                <button class="button" type="button" onclick="<?php echo setRaiseWeight ?>">+</button>
                                    &nbsp;&nbsp;<?php echo $currentSong->weight; ?>&nbsp;&nbsp;
                                <button class="button" type="button" onclick="<?php echo setLowerWeight ?>">-</button>
                                <br />   
                                <br />
                                Coming up
                                <br />......snip...

我绞尽脑汁寻找例子,但这就是我能想到的全部。它失败了,没有任何错误,但我甚至不知道是否onclick=真的在调用函数,或者函数是否$currentSong->ID在中采用了class.song.php。我知道当我将它作为测试添加到中时display.playing.php,它会生成/打印正确条目的表的 ID 号。我很困惑,但我又不太懂编码……我只是复制和粘贴。在我添加的代码之前,我还添加了一些代码,似乎以不同的方式处理数据库,但我看不懂那个版本。我知道我输入的代码是 mysql-workshop 所说的有效的……它确实在那里起作用来改变权重……虽然在 mysql 中,这一行更像是

UPDATE samdb.songlist SET weight = (weight + 20) WHERE weight > 50 AND weight < 70;

UPDATEsamdb.歌单权SET= '2' WHERE (ID= '33');

有单引号和其他标记(哈哈,这篇文章的代码写得很糟糕),但在 mysql-workshop 中,无论有没有标记,这两个代码都可以工作。我确信我只是语法不正确,但我搞不懂。

任何对这个无能的脑死亡非编码员的帮助都将不胜感激

答案1

问题解决了……尽管我不认为这是最有效的解决方法。我最终在<head>display.playing.php 中使用了以下内容:

`<?php
 if(array_key_exists('button1', $_POST)) {
     button1();
 }
 else if(array_key_exists('button2', $_POST)) {
     button2();
 }
 function button1() {
     require_once('../config/conf.php');
     global $link;
     global $currentSong;
     //$link = mysqli_connect("$dbhost", "$dbuser", "$dbpass", "$dbname");
     $link = mysqli_connect("acutal-address:port", "actual-users-login","actual-users-password", "actual-DB-name");
     if($link === false){
     die("ERROR: Could not connect. " . mysqli_connect_error());
        }
     $sql = "UPDATE songlist SET weight = (weight - 1) WHERE (ID='$currentSong->ID')";
     if(mysqli_query($link, $sql)){
        } else {
     echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
     }
  mysqli_close($link);
 }
    function button2() {
        require_once('../config/conf.php');
        global $link;
        global $currentSong;
        //$link = mysqli_connect("$dbhost", "$dbuser", "$dbpass", "$dbname");
        $link = mysqli_connect("acutal-address:port", "actual-users-login", "actual-users-password", "actual-DB-name");
        if($link === false){
        die("ERROR: Could not connect. " . mysqli_connect_error());
           }
        $sql = "UPDATE songlist SET weight = (weight + 1) WHERE (ID = '$currentSong->ID')";
        if(mysqli_query($link, $sql)){
        } else {
        echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
        }
     mysqli_close($link);
    }
    ?>`

然后稍后我在代码中将其添加到<body>

                    <td colspan="4" class="auto-style1">
                                Rating:</td>
                        </tr>
                        <tr>
                            <td class="auto-style1">
                           <form method="post">
                           <input type="submit" name="button1"
                           class="button" value="-" />
                           </form>
                            <td colspan="2" class="auto-style2">
                                <?php echo $currentSong->weight; ?></td>
                            <td class="auto-style1">
                           <form method="post">
                           <input type="submit" name="button2"
                           class="button" value="+" />
                           </form>
                        </tr>

经过一些 css 编辑和页面表格结构处理后,最终结果如下所示 在此处输入图片描述

我还有一个问题还没有解决,但这并不是什么大问题,因为这不是“公开使用的”(它没有做广告,而且只会被偶然发现...有人可以搞砸我的广播数据库..哈哈,我自己也这么做了,多年来一直忽略它..哈哈,基本上我所有的歌曲的权重都太低了,无法播放,现在我必须重新调整所有的权重)

我似乎无法让它function button1()/function button2在使用时连接到部分中的数据库$link = mysqli_connect("$dbhost", "$dbuser", "$dbpass", "$dbname");,当我尝试使用它时,它会引发一个错误,ERROR: Could not connect. Access denied for user ''@'localhost' (using password: NO)我甚至尝试添加require_once('../config/conf.php');其中包含变量的内容,但是如果我在<head><body>之类的任何其他地方使用该行<?php echo "$dbhost", "$dbuser", "$dbpass", "$dbname" ?>,它会显示信息....我检查了浏览器中的查看页面源代码,并且至少信息对公众不可见,所以我想它对我的目的有用...有点奇怪..当你第一次单击它时,它“似乎”没有做任何事情,但它确实会删除或将1添加到“权重”,然后第二次单击会注册第一次单击..换句话说,如果权重为50并且我单击减号一次,它仍然说它在50但实际上它在49(如果我检查mysql研讨会)并且如果我再次单击它它将显示49但数据库将在48如果我此时点击加号按钮一次它实际上会注册好像我单击向下按钮它将转到48但DB将在49 ...所以它似乎总是一次性的......那些是我可以接受“夸克”,但如果有人能告诉我为什么我必须使用“函数”中的物理信息而不是变量。

相关内容