Php安全mysqli查询

Php安全mysqli查询,php,mysqli,Php,Mysqli,我有一个mysqli查询,它从数据库中的表返回一行 $realName = mysqli_real_escape_string($con, $name); $row = mysqli_fetch_array(mysqli_query($con, "SELECT * FROM " . $tbprefix . "table WHERE name = '" . $realName . "'")) ; 如您所见,在查询$tbprefix和$realName中有两个变量。我已经在$rea

我有一个mysqli查询,它从数据库中的表返回一行

    $realName = mysqli_real_escape_string($con, $name);
    $row = mysqli_fetch_array(mysqli_query($con, "SELECT * FROM " . $tbprefix . "table WHERE name = '" . $realName . "'")) ;
如您所见,在查询
$tbprefix
$realName
中有两个变量。我已经在
$realName
变量上使用了mysqli\u real\u escape\u string(),但我不确定是否应该在另一个变量上使用它


这似乎是一个愚蠢或愚蠢的问题,但我不熟悉php编程,所以对我来说很复杂。

在PDO中使用准备好的语句:

$sth = $pdo->prepare("SELECT * FROM ? WHERE name = ?");
$sth->execute( Array($tbprefix . "table", $realName) );
用MySQLi 举个例子:

$query = $mysqli->prepare('SELECT * FROM users WHERE username = s');
$query->bind_param('s', $_GET['username']);

我不使用PDO,我刚刚开始理解MySQL,甚至可以使用MySQLi,但是我建议您使用PDOPO并不比MyQLI更困难,它只是不同的,但是IHO更容易。既然您已经使用MySQL,您应该真正考虑使用准备好的语句()。而不是手动转义查询。如果$tbprefix值来自用户,则需要使用它。。。如果它是您正在设置的,那么您不需要担心它。它是常量并存储在文件中。您不需要转义它。。。