Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php和Mysqli—您可以在没有WHERE子句的SELECT子句上使用准备好的语句吗?_Php_Mysqli - Fatal编程技术网

Php和Mysqli—您可以在没有WHERE子句的SELECT子句上使用准备好的语句吗?

Php和Mysqli—您可以在没有WHERE子句的SELECT子句上使用准备好的语句吗?,php,mysqli,Php,Mysqli,以下是一个简短的示例,由于您使用的是MySQLi,因此评论太长: 面向对象的样式: SELECT id, title, posted, duration, thumbnail, email, first_name FROM customers 程序样式,其中$conn是数据库连接: /* prepare query */ $stmt = $mysqli->prepare("SELECT id, title, posted, duration, thumbnail, email, firs

以下是一个简短的示例,由于您使用的是MySQLi,因此评论太长:

面向对象的样式:

SELECT id, title, posted, duration, thumbnail, email, first_name
FROM customers
程序样式,其中$conn是数据库连接:

/* prepare query */
$stmt = $mysqli->prepare("SELECT id, title, posted, duration, thumbnail, email, first_name FROM customers");

/* execute query */
$stmt->execute();

由于您没有明显的理由准备此语句,也就是说,您不想在此脚本中多次运行此查询,并且您没有要绑定到查询的参数占位符,因此您可以像这样简单地使用mysqli\u查询

/* prepare */
$stmt = mysqli_prepare($conn, "SELECT id, title, posted, duration, thumbnail, email, first_name FROM customers");

/* execute query */
mysqli_stmt_execute($stmt);
请记住,您不能使用占位符?对于列名或表名,请在此或mysqli_中准备,如果这是您最终的工作目标,正如@Fred ii-所建议的那样


作为社区维基发布

没有什么可以阻止您在MySQLi_3;中使用,因为它是有效的

你就是做不到,举几个例子:

从中选择列1、列2、列3? 选择从…起 选择从桌子上 如果您计划/设想这样做,因为这将构成一个表/列的绑定,这在准备好的语句中是不允许的,正如我们希望它尽可能地工作一样

然而,没有什么能阻止你使用所谓的安全列表

以下是一些参考资料:

关于使用over just,请参见以下相关问题的答案:


虽然这不是必需的,但是您可以在这个查询中使用一个准备好的语句,许多语句只是为了保持一致性。谢谢您的回复。我将如何使用我在问题中提出的示例SQL创建一个准备好的语句?这取决于您选择使用哪个API MySQLi,PDO。了解使用PDO的语句,并考虑使用杰伊。MyQLI API.如果您想知道的话,就不能绑定表/列。谢谢您。所以在这种SQL查询中,我不会使用问号作为占位符?你是对的@RiggsFolly,还有其他方法。我将所有查询发送到一个函数,因此prepare只是架构的一部分-每个查询都由同一个函数处理。非常感谢Jay和Riggs的快速响应和洞察力,非常感谢!从这个问题发布的那一刻起,我就知道我是对的lol@codeman我不会用问号作为占位符正如我已经说过几次,答案是否定的-
$sql = 'SELECT id, title, posted, duration, thumbnail, email, first_name
        FROM customers';

$result = mysqli_query($con, $sql);

while ( $row = $result->fetch_assoc() ) {
    echo $row['id'];   // or whatever
}