mysqli的问题全选

时间:2014-01-05 13:15:41

标签: php mysqli

我正在使用MySQLi连接,我有以下代码,我正在尝试从数据库表中选择库存ID定义的行的所有列,但我无法使其工作。我这样做是完全错误的吗?我希望能够在选择查询后的代码中使用$row['general_cleanliness']之类的内容。

$getScheduleCondition = $db->prepare("SELECT * FROM inventories WHERE inventory_id = ? LIMIT 1",)){
$getScheduleCondition->bind_param("i", $inventory);
$row = $getScheduleCondition->fetch_array();
$getScheduleCondition->close();

$inventory被定义为一个数字,我知道这是有效的。任何帮助都表示赞赏,如果这看起来像是一个基本问题,那就太遗憾了!

编辑: 对于每个人都告诉我我正在使用PDO,我不是:

$db = new mysqli('localhost', 'cl52-system', 'PASS', 'cl52-system');
if($db->connect_errno > 0){
    die('Unable to connect to database [' . $db->connect_error . ']');
}

2 个答案:

答案 0 :(得分:0)

你忘记了两件事。首先,您需要执行查询。您可以使用your_stmt_object->execute()docs)执行此操作。您的stmt-object没有方法fetch_array(),因此您首先需要使用mysqli_resultdocs)从->get_result()中提取fetch_array()然后您可以使用$getScheduleCondition = $db->prepare("SELECT * FROM inventories WHERE inventory_id = ? LIMIT 1"); $getScheduleCondition->bind_param("i", $inventory); $getScheduleCondition->execute(); //You need to execute the query $row = $getScheduleCondition->get_result()->fetch_array(); //From stmt to mysql_result to array $getScheduleCondition->close(); 如你所愿。

->fetch()

如果您不需要使用该数组,则可能更容易使用->bind_result()docs)和$getScheduleCondition = $db->prepare("SELECT * FROM inventories WHERE inventory_id = ? LIMIT 1"); $getScheduleCondition->bind_param("i", $inventory); $getScheduleCondition->bind_result( $column1, $column2, $column3, $etc ); $getScheduleCondition->execute(); //You need to execute the query $getScheduleCondition->fetch(); //Now the first row is in the variables defined above echo $column1; //<-- see? $getScheduleCondition->close(); docs)。

{{1}}

答案 1 :(得分:-2)

您传递的参数被标识为“i”(命名参数),但在您的查询中只有?,将bind_param更改为“:i”并更改? to:i在你的查询中。

    $getScheduleCondition = $db->prepare("SELECT * FROM inventories WHERE inventory_id = :i LIMIT 1",)){
    $getScheduleCondition->bind_param(":i", $inventory, PDO::PARAM_INT);
    $getScheduleCondition->execute(); // based on Sumurai8 comment, this is missing
    $row = $getScheduleCondition->fetch_array();
    $getScheduleCondition->close();

另外,PDO:PARAM_INT显式地将参数设置为整​​数。