Mysqli_fetch_assoc与params相反

时间:2014-06-25 19:31:13

标签: php mysqli

我正试图修改标准mysqli中的params。我无法用新的方式来定位我想要的列来从db获取结果。假设我有一个带有id,firstname,lastname和about的表。

$query = mysqli_query($con, $sqlstmt);

while($row = mysqli_fetch_assoc($query){
    $row['firstname']; 
    $row['about'];
}

这很容易做到但是当我尝试使用params时,执行etc我真的无法包装它。

$stmt = mysqli_prepare($connect, "SELECT * FROM medlemmar WHERE firstname=?");
mysqli_stmt_bind_param($stmt, 's', $firstname,);
mysqli_stmt_execute($stmt);

我不知道在使用第二选择时如何从特定列获取结果以及如何创建它的数组等。

在正常情况下我会做

$array[]= $row['firstname']

2 个答案:

答案 0 :(得分:0)

你应该使用关联绑定stmt_bind_assoc() 例如:

$stmt = $mysqli->prepare("SELECT name, userid FROM somewhere");
$stmt->execute();

$row = array();
stmt_bind_assoc($stmt, $row);

// loop through all result rows
while ($stmt->fetch()) {
    print_r($row);
}

来源:http://www.php.net/manual/en/mysqli-stmt.fetch.php

答案 1 :(得分:0)

使用预准备语句时,需要一个额外步骤才能从语句中获取mysqli_result资源。然后就可以像使用mysqli_query()中的mysqli_result一样使用它。

$stmt = $mysqli->prepare("SELECT name, userid FROM somewhere");
$stmt->execute();
$result = $stmt->get_result();
while($row = $result->fetch_assoc()) {
    $row['firstname']; 
    $row['about'];
}

此用法需要mysqlnd,默认情况下在PHP 5.4 +。

中启用

如果您没有mysqlnd,则必须绑定结果,如@joaofgf的答案中所示。

升级到mysqlnd是值得的,因为它的额外功能和更好的性能。