Php 为什么[1]上的问题的答案是?
好的,首先,这是我发送查询的函数:Php 为什么[1]上的问题的答案是?,php,mysql,Php,Mysql,好的,首先,这是我发送查询的函数: function send_query($sql) { global $rows; global $conn; connect(); $result = $conn->query($sql); while ($row = $result->fetch_assoc()) { $rows[] = $row; } mysqli_free_result($result); $conn->close(); return $rows; } 当
function send_query($sql) {
global $rows;
global $conn;
connect();
$result = $conn->query($sql);
while ($row = $result->fetch_assoc()) {
$rows[] = $row;
}
mysqli_free_result($result);
$conn->close();
return $rows;
}
当我这样使用它时:
$rows = send_query("SELECT views FROM posts WHERE postid = " . $_GET['id']);
foreach( $rows as $row ) {
print_r($row);
echo "<BR>";
}
为什么它将我需要的答案放在数组的[1]而不是[0]中?为什么要把我没有要求的其他东西放进[0]?看起来是因为你从来没有在你的查询中插入过$\u GET值。如果您无法解决此问题,请选择foreach曲目,而不是“for($i;…)”样式。祝你好运谢谢你的回复。为什么永远不要在查询中插入$\u GET值?这仅仅是出于安全考虑吗?它为SQL注入打开了大门。用户输入应该总是经过消毒,这就是为什么。。。这不是一件小事:SQL注入不需要太多的知识或技能=>很多有恶意的人都可以使用它=>保护自己不受它的影响。$rows数组是空的。它在每个页面的顶部声明为空。我不认为它是空的,否则您将不会有[0]结果,其中包含您没有查询的字段:Array([postid]=>1[username]=>jesusfreak[unique]=>3)。全局变量将在声明后传递到send_查询函数中,并在结果集前面加上前缀。你必须小心使用Globals。幽默我并尝试我的代码建议既然函数仍然返回它,那么不将
$rows
定义为全局行怎么样?摆脱全球变暖@AbraCadaver正确,它根本不需要定义。我在考虑这是否是伪代码,它可以在其他地方使用并保留它,但将结果附加到一个新数组:)太好了!问题是我忘了在重新澄清之前取消设置它。干得好!:)
global $rows
global $rows
function send_query($sql) {
global $rows;
global $conn;
connect();
$result = $conn->query($sql);
$sqlresults = array();
while ($row = $result->fetch_assoc()) {
$sqlresults[] = $row;
}
mysqli_free_result($result);
$conn->close();
return $sqlresults;
}