You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用mysql_query('set names utf8')获取数据失败,脚本及代码问题求助

问题分析与修复方案

你的代码里有几个关键问题导致无法正常获取数据,我来帮你拆解并修正:

1. 混用mysql_*和mysqli_*函数

你用mysql_connect()建立连接,但后续用mysqli_fetch_array()读取结果——这两个是PHP不同的数据库扩展,函数完全不能交叉使用,必须统一用一套。而且mysql_*系列函数在PHP 5.5+已被废弃,PHP 7+直接移除,强烈建议改用mysqli_*扩展。

2. 数据库连接参数错误

mysql_connect()只接受3个参数(主机、用户名、密码),你写了4个参数(把数据库名也传进去了),这是mysqli_connect()的用法,导致连接本身就失败了。

3. mysql_query()参数顺序错误

mysql_query()的正确顺序是mysql_query(查询语句, 连接资源),你把连接资源放在了前面,直接导致查询执行失败。


修正后的完整代码(推荐用mysqli面向过程写法)

// 用mysqli_connect建立连接,参数顺序正确
$db = mysqli_connect("localhost", "root", "", "news");
if (!$db) {
    die("数据库连接失败: " . mysqli_connect_error());
}

// 设置字符集,mysqli用mysqli_set_charset更规范可靠
mysqli_set_charset($db, "utf8");

// 执行查询,mysqli_query参数是连接资源在前,SQL在后
$result = mysqli_query($db, "SELECT * FROM news_list order by id LIMIT 0,4");

// 检查查询是否成功
if (!$result) {
    die("查询失败: " . mysqli_error($db));
}

// 用mysqli_fetch_array读取结果
while ($row = mysqli_fetch_array($result)) {
?>
<li>
    <a href="?id=<?php echo $row['id']; ?>" class="">
        <div class="">
            <img width="64" height="64" src="<?php echo $row['images']; ?>" class="" alt="" itemprop="image" />
        </div>
        <div class="">
            <?php echo substr($row['title'], 0, 30); // 补全你未写完的截取逻辑,示例为截取标题前30字符 ?>
        </div>
    </a>
</li>
<?php
}

// 释放结果集并关闭连接
mysqli_free_result($result);
mysqli_close($db);
?>

关键说明

  • 统一使用mysqli_*函数,彻底避免扩展混用的兼容性问题。
  • mysqli_set_charset()比set names 'utf8'更可靠,会同时设置客户端、连接和结果集的字符集。
  • 增加了连接/查询的错误检查,方便你快速定位问题。
  • 修正了链接里的#?id=,去掉多余的#,否则URL会变成锚点,无法正确传递id参数。

如果坚持要使用旧的mysql_*函数(不推荐),修正后的代码如下:

// 先建立连接,再选择数据库
$db = mysql_connect("localhost", "root", "");
if (!$db) {
    die("数据库连接失败: " . mysql_error());
}
mysql_select_db("news", $db);

// 设置字符集
mysql_query("set names 'utf8'", $db);

// 执行查询,参数顺序正确
$result = mysql_query("SELECT * FROM news_list order by id LIMIT 0,4", $db);
if (!$result) {
    die("查询失败: " . mysql_error($db));
}

while ($row = mysql_fetch_array($result)) {
// 后续HTML部分和上面一致
}

内容的提问来源于stack exchange,提问作者user2226832

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:00:02