如何修复Array to String conversion错误及MySQL查询PHP代码问题
修复PHP代码中的Array to String Conversion错误
你遇到的这个错误很典型——问题出在你访问数组元素的语法上!你把取值操作写成了赋值操作:
错误的写法:
echo $row=["id"]; // 这是在给$row赋值一个新数组,而不是取$row里的id值
当你执行$row=["id"]时,其实是创建了一个只包含"id"元素的新数组并覆盖了原本从数据库获取的$row数据,随后echo这个数组时,PHP就会抛出"Array to String conversion"错误,因为echo只能输出字符串或标量类型的值。
正确的写法应该是用方括号直接访问数组元素(去掉等号):
echo $row["id"]; // 从$row数组中取出"id"对应的字段值
修复后的完整代码
<?php $status = $_GET['status']; if ($status == "disp") { // 添加数据库连接失败的判断,方便排查问题 $link = mysqli_connect("localhost", "root", ""); if (!$link) { die("数据库连接失败: " . mysqli_connect_error()); } mysqli_select_db($link, "mainstock"); $res = mysqli_query($link, "SELECT * FROM 1st_year"); echo "<table border='1'>"; // 加border让表格结构更清晰 // 推荐用mysqli_fetch_assoc,只返回关联数组,避免索引数组冗余 while ($row = mysqli_fetch_assoc($res)) { echo "<tr>"; echo "<td>{$row['id']}</td>"; echo "<td>{$row['BooksName']}</td>"; echo "<td>{$row['Avaibality']}</td>"; // 小提示:单词拼写应为Availability,可同步修正数据库字段名 echo "<td>{$row['Price']}</td>"; echo "<td>{$row['Quantity']}</td>"; echo "</tr>"; }; echo "</table>"; mysqli_close($link); // 养成手动关闭数据库连接的好习惯 } ?>
额外优化建议
- 使用
mysqli_fetch_assoc()替代mysqli_fetch_array():前者只返回以字段名为键的关联数组,避免了索引数组的冗余,更贴合你通过字段名取值的需求 - 添加连接失败处理:避免连接出错时出现空白页面,能快速定位问题
- 表格添加
border属性:默认表格无边框,添加后数据展示更直观
内容的提问来源于stack exchange,提问作者Imran S.
相关产品推荐
相关产品推荐

