OneStep

问题集锦---代码Bug录

Toc目录

php+mysql 数据库后台传输中文乱码问题?

在 数据库连接后 $link = mysqli_connect(HOST, DB_USER, DB_PWD, DB);
设置 编码  // 修改数据库连接字符集为 utf8
mysqli_set_charset($link,"utf8");

!!!一个 中文乱码 小问题 半天也解决不了
改变 编码不统一 可能导致 无法插入数据
mysql_query(mysql, “SET CHARACTER SET GBK”);
mysql_query(mysql, “SET CHARACTER SET utf8”);
SET NAMES utf8有什么区别
mysql_query("SET NAMES UTF8");

数据库下 通过 SHOW VARIABLES LIKE 'character%'; 命令查看 当前编码

//设置字符集为utf8,解决中文乱码的问题
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET CHARACTER_SET_RESULT = utf8");

备注:MySQL/MariaDB中的UTF-8并不是真正的UTF-8,其中的UTF8MB4才是真正的UTF-8。因此推荐使用UTF8MB4。

参考资料:MySql修改数据库编码为UTF8_红苹果乐园-CSDN博客_数据库的编码格式修改为utf8

os站点 PHP页面顶部 出现Notice: Undefined index: act in 空间路径 on line 18警告提示

 if ($_POST['act'] == 'submit') 
 修改为 if (@$_POST['act'] == 'submit') 
  在$_GET['act'] 前面加个@关闭警告

打开 phpMyAdmin 一直弹 错误提示窗口 的问题 错误显示如下代码

Notice in ./libraries/classes/Display/Results.php#1210
 Trying to access array offset on value of type bool

Backtrace

./libraries/classes/Display/Results.php#1328: PhpMyAdmin\Display\Results->_getTableHeadersForColumns(

网上查阅发现这是 phpMyAdmin 和 php版本 不对应导致的
phpmyadmin 4.0 支持 PHP 5.2——5.4,
phpmyadmin 4.9 支持 PHP 5.5——7.0,
phpmyadmin 5.0 支持 PHP 7.1 及以上版本。

idea站点 页脚出现 如下报错

Fatal error: Uncaught Error: Call to undefined function redirect() in 路径 on line 208

也是php版本问题

os站点 登陆页面 页眉出现 如下报错

Notice: Undefined index: submit in 路径 on line 4

还是php版本问题
一般都是使用php版本 过高引起的

php页面连接mysql数据库 出错自查

原数据库连接代码

 $sql = "select * from link where uid = $mid and url = '".addslashes($url)."' limit 1";
    $res = $mysqli::query($sql);

插入下面代码 //debug打印错误信息

    if (!$res) {
printf(“Error: %s\n”, mysqli_error($mysqli));
  exit();
    }

引号 一定要是英文状态下的英文状态下的引号
printf("Error: %s\n", mysqli_error($mysqli));

print_r() 函数打印变量,以更容易理解的形式展示。
函数 mysqli_error() 用于 返回 错误描述
mysql_error() 函数返回上一个 MySQL 操作产生的文本错误信息
在php在或者 可以用 echo '<script>alert("测试一下");</script>'; 查看 错误位置

php与mysql连接 mysqli::query() , mysqli_query() , mysqli->query()
还有 老版的 mysql::query()mysql_query() , mysql->query()

执行一个或多个针对数据库的查询 mysqli_multi_query()

还有 最前面加$符号的 如 $mysqli->query

就一个 空格问题 折腾了 好几个小时
$res = mysql::query("$sql");
$sql前面少了一个空格 $res = mysql::query(" $sql");

$sql = "select * from link where uid = $mid and url = '".addslashes($url)."' limit 1";
    $res = mysql::query("$sql");

link.php页面有这么一段代码 其中 语句前是否有空格 差别很大

links站点 数据库内核代码升级为mysqli_query后 无法 插入数据的问题 解决了、

原来在低版本下 数据库字段 创建没有默认值 也能插入, 换到 高版本(在php7 数据库mysql7 或是 MariaDB 10 以上)后 该字段 设置 一定要默认值 才行
新创建的字段(hits) 点击量 。
实在找到 出错原因,页面死活不报错。折腾了很久。 最后才想到 替换sql语句直接 从数据库管理工具phpmyadmin内复制出能插入成功的sql语句 代入代码中测试。

源码link.php页面代码 备忘

 // $sql = "INSERT INTO `link` (`id`, `icon`, `title`, `url`, `category_id`, `uid`, `hits`, `ctime`) VALUES (NULL, '11', '22', '33', '4', '1', '0', '1497361351')";
    $sql = build_insert_sql("link", array(
        "category_id" => $cid,
        "icon" => addslashes($icon),
        "url" => addslashes($url),
        "title" => addslashes($title),
        "uid" => $mid,
        "ctime" => time()
    ));
    $lid = mysql::query("$sql");

在phpmyadmin下插入空值 数据会
报错误提示 Warning: #1366 Incorrect integer value
1366错误是MySQL配置问题,不允许向数据库插入空值。

数据库导入sql文件时报错

提示 : Invalid default value for 'create_time' 如何处理
找到 出错语句 create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
将datetime 修改改为 timestamp

参考资料: MySQL中_Invalid default value_错误解决方法_'嗯哼。๛-CSDN博客

网站搬家后报 No Input file specified 导致搬家失败的解决方案

删除主机空间源码目录下 上一个主机 备份文件(.user.ini 和 .htaccess)
每个 主机空间 根据环境软件 的类型及版本 都不同 因而 配置信息 也不同 这两配置文件 不必要备份。
举例说明 也许上一个主机使用的是 Nginx 而 搬迁后 使用Apache

报错如下

Warning: file_put_contents(/usr/local/lighthouse/softwares/links.beiduoye.cn/tpl_c/m/head.html.cache.php): failed to open stream: Permission denied in /usr/local/lighthouse/softwares/links.beiduoye.cn/inc/php-inc/src/core.php on line 270

请修改tpl_cm 目录的权限 修改为777

links站点 左侧分类分页按钮

实现动态隐藏(第一页的时候隐藏 向左按钮,最后一页的时候隐藏向右按钮)



document.getElementById('c_nav_firstp').style.visibility="visible";
document.getElementById('c_nav_prev').style.visibility="visible";
document.getElementById('c_nav_next').style.visibility="visible";
document.getElementById('c_nav_lastp').style.visibility="visible";

带cplayer音乐播放插件的网站 浏览器 按F12源代码检查 会 报如下错误

DevTools 无法加载来源映射:无法加载 http://code.beiduoye.cn/usr/themes/bdy/js/cplayer.js.map 的内容:HTTP 错误:状态代码 404,net::ERR_HTTP_RESPONSE_CODE_FAILURE

解决方法---

删除 cplayer.min.js 这个文件下 末尾 这行注释

//# sourceMappingURL=cplayer.js.map

links站点 tpl目录下 代码修改后 报如下错

Warning: file_put_contents(/usr/local/lighthouse/softwares/links.beiduoye.cn/tpl_c/head.html.cache.php): failed to open stream: Permission denied in /usr/local/lighthouse/softwares/links.beiduoye.cn/inc/php-inc/src/core.php on line 270

解决方法:
修改tpl_c目录权限
chmod -R 777 tpl_c

Xshell操作时报错如下
删除文件本地误上传的index (2).php文件
linux syntax error near unexpected token ('`
是因为修改操作 有括号的文件 需要转义
方法如下:rm -f index\(1\).php
rm -f "index\(1\).php"

带加号的参数直接传入url会不显示+号
示例:
var url = "https://code.beiduoye.cn/?q=1+1";
直接window.open(url);参数会变成1 1
应当写成
window.open(encodeURIComponent(url);
没有进行转化 控制台 会报错 Invalid or unexpected token:数据格式错误

跨越 请求图片时

控制台 报错

Access to XMLHttpRequest at 'https://pic3.zhimg.com/v2-c8bc5ddaea5cc52923697f25b129d754_r.jpg?source=1940ef5c' (redirected from 'https://www.beiduoye.cn/rand_bg/get_bg.php?key=other') from origin 'https://www.beiduoye.cn' has been blocked by CORS policy: Request header field x-requested-with is not allowed by Access-Control-Allow-Headers in preflight response.

原版后台php代码
header("Location: $source");
修改代码
header('Access-Control-Allow-Origin:*',"Location: $source");

支付宝打赏 微信打赏

免责声明:本站多数资源来源于互联网。少数原创内容为本人随意书写不对其负任何法律责任(均为键盘和鼠标自行敲击),部分有助于网友的内容仅供学习与交流。如有转载、盗链等其它行为产生对国家社会网络不良影响均与本人无关。
版权说明:未经博主授权禁止转载、摘编、复制或建立镜像。对既成事实本站将保留所有的权利。

      




发表评论

发表新评论

请输入本站名:

暂无评论   

发送消息!
onestep
网站二维码
手机扫一扫,查看
.
贝多叶@聚合支付

真诚赞赏,手留余香

使用微信扫描二维码完成支付