mysqli :: query()期望参数1是字符串,给定对象

时间:2015-06-05 20:50:08

标签: php mysql mysqli output rows

我保存了输出后续行的参数化字符串匹配查询所需的步骤。转移到故障驱动器时,我丢失了文件。所以...我试图将事情混合在一起,这是行不通的。

$stmt = $link->prepare("SELECT id,entry,date from table WHERE string=? ORDER by Id DESC");
$stmt->bind_param('s',$string);
$stmt->execute();
$stmt->bind_result($id_db,$entry_db,$date_db);

if (($result = $link->query($stmt)) {

    while ($row = $result->fetch_row()){

    }

}

我已经可以说这是错误的,我没有使用参数化结果,我试图使用$ row [0]等数组索引。

我知道这个人会大喊大叫。

我想要的最终结果是:

string1有行:bob,mack,chris string2有行:alice,claire,lara

如果$ string = string1,则输出应为:

克里斯 麦克 鲍勃

我相信我的问题是我正在混合语句类型

1 个答案:

答案 0 :(得分:1)

假设" $ link"是PHP" mysqli"的一个例子。上课,那" id"和" Id"你的表格中有两个不同的列(如果不是这样的话,请尝试替换" Id"在" id"在段" ... ORDER BY Id .."),这是基于你的例子,我建议你尝试:

// Declare your "prepare" statement (make sure to change "Id" for "id" if both are used
// in reference to the same column in your table)
$stmt = $link->prepare('SELECT id, entry, date FROM table WHERE string = ? ORDER BY Id DESC');

// Bind the $string variable
$stmt->bind_param('s',$string);

// Execute the statement
$stmt->execute();

// Store the result (this is sometimes useful, depending on the data types in your table)
$stmt->store_result();

// Check whether at least one row in table matches the query, if not, stop here...
if ($stmt->num_rows === 0) exit('No matching rows'); // or do something else...

// Declare a container (i.e. storage) for each row (this is optional and depends on what
// you are trying to achieve)
$data = [];

// Loop through results (this is just an example; this could be achieved in a number
// of different ways)
for ($i = 0; $i < $stmt->num_rows; $i++)
{
    // Add a new array cell to $data, at index $i
    $data[$i] = [];

    // Bind result for row $i
    $stmt->bind_result($data[$i]['id'],$data[$i]['entry'],$data[$i]['date']);

    // Fetch $i^{th} row
    $stmt->fetch();
}

// Check if it worked (temporary)
var_dump($data);