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


PHP code to get MySQL row from URL param

有人能帮我吗?

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

它是这样工作的:

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

数据库布局:.+-------+------------+------------+------------+------------+---------------+ | id | Naam | Metgesel | Kind1 | Kind2 | Email | +-------+------------+------------+------------+------------+---------------+ | abc12 | Bobby | Caily | * | * | b@example.com | | ... | ... | ... | ... | ... | ... | +-------+------------+------------+------------+------------+---------------+

遇到错误:

Warning: mysql_real_escape_string() expects parameter 1 to be string, array given in /home/.../public_html/wp-content/plugins/insert-php-code-snippet/shortcode-handler.php(32) : eval()'d code on line 4 Invalid or no security 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_eescape_string函数,而sprintf()正在查找一个变量。。。这句话确实没有任何意义,但我提到的方式是调用它的正确方式。

我没有仔细查看其余的代码,看看是否还有其他问题,但请先尝试删除您给出的错误。