我正在编写显示信息表单。这是一些php的工作:
$link = new mysqli('localhost', 'root', '****', '***');
if ($link->connect_error) {
die("Connection failed: " . $link->connect_error);
}
$_GET = array('first_name', 'last_name', 'age', 'year_of_birth',
'year_of_death', 'date_of_death', 'month_of_death', 'funeral_home',
'city', 'county');
// gets value sent over search form
$first_name = mysqli_real_escape_string($link, $_REQUEST['first_name']);
$last_name = mysqli_real_escape_string($link, $_REQUEST['last_name']);
$age = mysqli_real_escape_string($link, $_REQUEST['age']);
$year_of_birth = mysqli_real_escape_string($link,
$_REQUEST['year_of_birth']);
$year_of_death = mysqli_real_escape_string($link,
$_REQUEST['year_of_death']);
$date_of_death = mysqli_real_escape_string($link,
$_REQUEST['date_of_death']);
$month_of_death = mysqli_real_escape_string($link,
$_REQUEST['month_of_death']);
$funeral_home = mysqli_real_escape_string($link,
$_REQUEST['funeral_home']);
$city = mysqli_real_escape_string($link, $_REQUEST['city']);
$county = mysqli_real_escape_string($link, $_REQUEST['county']);
$sql = mysqli_query($link, "SELECT *
FROM obituaries
WHERE FirstName AND LastName AND Age AND YearOfBirth AND YearOfDeath
AND DateOfDeath AND MonthOfDeath AND FuneralHome AND City AND County
LIKE ('$first_name' AND '$last_name' AND '$age' AND '$year_of_birth'
AND '$year_of_death' AND '$date_of_death' AND '$month_of_death' AND
'$funeral_home' AND '$city' AND '$county')");
$results = mysqli_query($link, $sql);
if(mysqli_query($link, $first_name)){
echo "Success ";
} else{
echo "ERROR: Not able to execute $sql. " . mysqli_error($results);
}
?>
似乎一切都很好:
$results = mysqli_query($link, $sql);
if(mysqli_query($link, $first_name)){
echo "Success ";
} else{
echo "ERROR: Not able to execute $sql. " . mysqli_error($results);
}
?>
当我运行代码时,它给了我2个错误
- (!)警告:mysqli_query()要求参数2为字符串,对象在第33行的C:\ wamp \ www \ searchreturntest2.php中给出
和
- (!)可捕获的致命错误:第38行的C:\ wamp \ www \ searchreturntest2.php中无法将类mysqli_result的对象转换为字符串
第33行:
$results = mysqli_query($link, $sql);
第38行:
echo "ERROR: Not able to execute $sql. " . mysqli_error($results);
我已经盯着这个以及其他解决方案了好几个小时。有人可以帮我弄清楚为什么我会收到这些错误吗?
答案 0 :(得分:0)
第一个错误已经说明了所有内容:( ! ) Warning: mysqli_query() expects parameter 2 to be string, object given in C:\wamp\www\searchreturntest2.php on line 33
$results = mysqli_query($link, $sql);
此处参数2为$sql
。显然这应该是一个字符串,但是给出了一个对象。
$sql = mysqli_query($link, "SELECT *
我们在此处看到mysqli_query
被分配到$sql
的结果。如果我们阅读it's documentation(请务必养成这样做的习惯),那么我们会读到:
对于成功的SELECT,SHOW,DESCRIBE或EXPLAIN查询,mysqli_query()将返回一个mysqli_result对象。
在此声明:我们将获得一个对象。因此,如果您将其提供给需要字符串的方法,您将收到警告。
第二个错误只是意味着将对象自动转换为字符串的尝试失败。开心:无论如何,你不应该依赖这种自动转换。要明确,为了确保1个月后你自己仍然能够理解发生了什么以及为什么(根据我自己的经验这最后一句话)。 : - )