从 URL 参数获取 MySQL 行的 PHP 代码

标签 php mysql wordpress

有人可以帮我吗?

我一直在我的一些 WordPress 页面中使用下面的代码,但我很久以前就看过它,以至于我真的不记得如何调试它 - 想想吧。 ..唯一改变的是数据库。

它的工作原理如下:

  1. URL 具有名为 id 的参数,格式如下:http://example.com/post?id= ...
  2. 代码检查参数是否存在,否则重定向至主页。
  3. 如果参数存在,代码将获取 ID 并将其与我的 ISP 托管的 MySQL 数据库中的记录进行比较。
  4. Match 在 echo 语句中使用。
  5. 页面上的 div 已激活。

数据库布局: .+--------+------------+------------+------------ -+------------+----------------+ |编号 |纳姆 |梅特格塞尔 |种类1 |种类2 |电子邮件 | +--------+------------+------------+------------+-- ----------+----------------+ | ABC12 |鲍比|凯莉 | * | * | b@example.com | | ... | ... | ... | ... | ... | ... | +--------+------------+------------+------------+-- ----------+----------------+

遇到错误:

警告:mysql_real_escape_string() 期望参数 1 为字符串,数组在/home/.../public_html/wp-content/plugins/insert-php-code-snippet/shortcode-handler.php( 32) : 第 4 行 eval() 代码 无效或没有安全 key !

代码:

<script>
function invite(){
    document.getElementById('invite').style.display=(document.getElementById('invite').style.display=='block')?'none':'block'; 
}
</script>

<script>
function returnHome(){
    setTimeout(function () {window.location.href = 'http://example.com';},2000); 
}
</script>

$part = $_REQUEST['id'];

if(isset($_GET["id"])){
    $query = sprintf("SELECT * FROM `DATABASE`.`TABLE`
       WHERE idquack='$part'",
       mysql_real_escape_string($query));

    $result = mysql_query($query);
    if (!$result) {
        $message = 'Invalid or no security key';
        die($message);
    } else {
        while ($row = mysql_fetch_assoc($result)) {
            if ($row['Metgesel'] != "*"){
                if ($row['Metgesel'] == "#"){
                    if ($row['Kind1'] != "*"){
                        if ($row['Kind2'] != "*"){
                            echo '<h1>' . $row['Naam'] . ", " . "Metgesel" . ", " . $row['Kind1'] . " en " . $row['Kind2'] . "</h1>";
                        } else {
                            echo '<h1>' . $row['Naam'] . ", " . "Metgesel" . " en " . $row['Kind1'] . "</h1>";
                        }
                    } else {
                         echo '<h1>' . $row['Naam'] . " en " . "Metgesel" . "</h1>";
                    }
                } else{
                    if ($row['Kind1'] != "*"){
                        if ($row['Kind2'] != "*"){
                            echo '<h1>' . $row['Naam'] . ", " . $row['Metgesel'] . ", " . $row['Kind1'] . " en " . $row['Kind2'] . "</h1>";
                        } else {
                            echo '<h1>' . $row['Naam'] . ", " . $row['Metgesel'] . " en " . $row['Kind1'] . "</h1>";
                        }
                    } else {
                        echo '<h1>' . $row['Naam'] . " en " . $row['Metgesel'] . "</h1>";
                    }
                }
            } else {
                echo '<h1>' . $row['Naam'] . "</h1>";
            }

            echo '<script>invite();</script>';
        }
    }

    mysql_free_result($result);
} else{
    echo 'Hold on tight - we're taking you home!';
    echo '<script>returnHome();</script>';
}

最佳答案

您需要更改此行:

$query = sprintf("SELECT * FROM `DATABASE`.`TABLE`
       WHERE idquack='$part'",
       mysql_real_escape_string($query));

到这一行:

$query = sprintf( "SELECT * FROM DATABASE.TABLE WHERE idquack='%s'", mysql_real_escape_string( $part ) );

您的错误是由于您将整个查询本身传递到 mysql_real_escape_string 函数中,并且 sprintf() 正在寻找变量...该行实际上没有任何意义,因为您拥有它,但我提到的方式是调用它的正确方法。

我没有查看其余代码以查看是否存在任何其他问题,但请先尝试删除您给出的错误。

关于从 URL 参数获取 MySQL 行的 PHP 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26537713/

相关文章:

PHP如何检测变量的变化?

Wordpress 站点从 https 恢复...链接断开

php - 在woocommerce中手动将产品添加到购物车

javascript - WordPress 按钮触发 ajax 请求

php - 更改 PDF 文件中的内容

php - 如何列出林中的所有域?

php - Wordpress 帖子循环显示 post_name/slug

MySQL 表大小

python - 将一个不相关的行附加到 MySQL 查询

php - 与 Doctrine 得到相同的结果