Php和Mysqli—您可以在没有WHERE子句的SELECT子句上使用准备好的语句吗?
以下是一个简短的示例,由于您使用的是MySQLi,因此评论太长: 面向对象的样式: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
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
}