php - 在“可恢复的致命错误:类 mysqli 的对象无法转换为字符串”中插入查询结果
问题描述
单击提交按钮后,不存储记录。我浏览过的所有语法都很好。阻止它插入的东西在哪里?我浏览的大部分指南几乎都是因为 select 语句,但现在我是 insert 语句并且发生了同样的问题。
这是我的代码:
<table border='1'>
<tr>
<th colspan="2">
<h1>Property For Rent</h1>
</th>
<form method="post">
<tr><td>Property NO:</td><td><input type="textbox" name="pid"></td></tr>
<tr><td>Street:</td><td><input type="textbox" name="street"></td></tr>
<tr><td>City:</td><td><input type="textbox" name="city"></td></tr>
<tr><td>Post Code:</td><td><input type="textbox" name="postcode"></td></tr>
<tr><td>Type:</td><td><input type="textbox" name="type"></td></tr>
<tr><td>Rooms:</td><td><input type="textbox" name="rooms"></td></tr>
<tr><td>Rent:</td><td><input type="textbox" name="rent"></td></tr>
<tr><td>Owner No:</td><td><select name="ownerno">
<?php
$conon=mysqli_connect('localhost','root','','dreamhome');
$SQLon="select distinct ownerNo from propertyforrent";
$queryresulton = mysqli_query($conon,$SQLon);
while($resulton=mysqli_fetch_array($queryresulton))
{
echo '<option value=" '.$resulton['ownerNo'].' ">'.$resulton['ownerNo'].'</option>';
}
?>
</td></tr>
<tr><td>Staff No:</td><td><select name="staffno">
<?php
$consn=mysqli_connect('localhost','root','','dreamhome');
$SQLsn="select distinct staffNo from propertyforrent";
$queryresultsn = mysqli_query($consn,$SQLsn);
while($resultsn=mysqli_fetch_array($queryresultsn))
{
echo '<option value=" '.$resultsn['staffNo'].' ">'.$resultsn['staffNo'].'</option>';
}
?>
</td></tr>
<tr><td>Branch No:</td><td><select name="branchno">
<?php
$conbn=mysqli_connect('localhost','root','','dreamhome');
$SQLbn="select distinct branchNo from propertyforrent";
$queryresultbn = mysqli_query($conbn,$SQLbn);
while($resultbn=mysqli_fetch_array($queryresultbn))
{
echo '<option value=" '.$resultbn['branchNo'].' ">'.$resultbn['branchNo'].'</option>';
}
?>
</td></tr>
<td><input type="Submit" name="submit">
</td>
</form>
</table>
<?php
if(isset($_POST['submit']))
{
if((!empty($_POST['pid']))&&(!empty($_POST['street']))&&(!empty($_POST['city']))
&&(!empty($_POST['postcode']))&&(!empty($_POST['type']))&&(!empty($_POST['rooms']))&&(!empty($_POST['rent']))
&&(!empty($_POST['ownerno']))&&(!empty($_POST['staffno']))&&(!empty($_POST['branchno'])))
{
$conad=mysqli_connect('localhost','root','','dreamhome');
if(!$conad)
{
echo 'Note connected to server';
}
if(!mysqli_select_db($conad,'dreamhome'))
{
echo 'Database Not Selected';
}
$pid=mysqli_real_escape_string($conad,$_POST['pid']);
$street=mysqli_real_escape_string($conad,$_POST['street']);
$city=mysqli_real_escape_string($conad,$_POST['city']);
$postcode=mysqli_real_escape_string($conad,$_POST['postcode']);
$type=mysqli_real_escape_string($conad,$_POST['type']);
$rooms=mysqli_real_escape_string($conad,$_POST['rooms']);
$rent=mysqli_real_escape_string($conad,$_POST['rent']);
$ownerno=mysqli_real_escape_string($conad,$_POST['ownerno']);
$staffno=mysqli_real_escape_string($conad,$_POST['staffno']);
$branchno=mysqli_real_escape_string($conad,$_POST['branchno']);
$SQLad= "INSERT INTO propertyforrent (propertyNo,street,city,postcode,type,rooms,rent,ownerNo,staffNo,branchNo)
VALUES ('$pid','$street','$city','$postcode','$type','$rooms','$rent','$ownerno','$staffno','$branchno')";
$resultad=mysqli_query($conad,$SQLad);
if(!$resultad)
{
echo "record not save!,mysqli_error($conad)"; **<-- here the error mentioned occur**
}
else
{
echo "record save!";
}
}
else
{
echo "<h1>Please fill up all field!</h1>";
}
}
?>
mysqli_error 提示的错误是
可恢复的致命错误:类 mysqli 的对象无法转换为字符串
我只是 PHP 和 HTML 的初学者,我是两个月前开始的。
解决方案
您没有mysqli_error()
正确调用以显示错误消息。内部双引号字符串变量被替换,但不调用函数。所以当你写:
echo "record not save!,mysqli_error($conad)";
它试图$conad
用它的值替换变量。但这只能在值是字符串或数字时完成,不能将 MySQLI 连接放在字符串中。
您需要在字符串之外调用该函数并将其连接起来。
echo "record not save! " . mysqli_error($conad);
或给多个参数echo
:
echo "record not save! ", mysqli_error($conad);
您的INSERT
查询不起作用的原因是value
您的选项中的属性中有额外的空格。
echo '<option value=" '.$resulton['ownerNo'].' ">'.$resulton['ownerNo'].'</option>';
字符后面有一个空格"
,所以它正在创建
<option value=" CO40 ">
代替
<option value="CO40">
将其更改为:
echo '<option value="'.$resulton['ownerNo'].'">'.$resulton['ownerNo'].'</option>';
对于创建选项的所有其他行也是如此。
推荐阅读
- r - 减小整体图例大小(元素和文本)
- firebase - 在 Firebase Hosting SPA + 2 个子文件夹 firebase.json 上配置重定向
- arrays - 如何从 RAML 中定义的枚举值中放入元素数组?
- php - index.php 工作但 http://localhost/MySite/about 不工作
- corda - 了解 Corda Enterprise 的恶名
- single-page-application - SPA 解决方案是否适合开发大数据方法应用程序?
- javascript - 找不到 Brain.js 导入
- python - Python。在熊猫中将日期列提取为“星期几”、月份...的几列
- javascript - iframe src 允许所有来源但仍接收跨域错误
- python - Odoo 10:更改树视图中的默认搜索