mysqli::query() 期望参数 1 为字符串,给定的对象
mysqli::query() expects parameter 1 to be string, object given
我已经保存了输出后续行的参数化字符串匹配查询所需的步骤。传输到有故障的驱动器时,我丢失了文件。所以...我正在尝试将事情混合在一起,但这是行不通的。
$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 那么输出应该是:
克里斯
麦克
鲍勃
我认为我的问题是我在混合语句类型
假设“$link”是 PHP 的 "mysqli" class 的实例,并且 "id" 和 "Id"在您的 table 中有两个不同的列(如果不是这种情况,请尝试在段“.. ORDER BY Id..”中将 "Id" 替换为 "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);
我已经保存了输出后续行的参数化字符串匹配查询所需的步骤。传输到有故障的驱动器时,我丢失了文件。所以...我正在尝试将事情混合在一起,但这是行不通的。
$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 那么输出应该是:
克里斯 麦克 鲍勃
我认为我的问题是我在混合语句类型
假设“$link”是 PHP 的 "mysqli" class 的实例,并且 "id" 和 "Id"在您的 table 中有两个不同的列(如果不是这种情况,请尝试在段“.. ORDER BY Id..”中将 "Id" 替换为 "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);