php - 搜索栏类型错误
问题描述
各位晚安!
传递给 CodeIgniter\Database\BaseBuilder::like() 的 TypeError 参数 2 必须是字符串类型,给定 null,在第 31 行的 D:\xampp\htdocs\lordeCI\app\Controllers\AutocompleteSearch.php 中调用
Codeigniter为下面的代码块抛出此错误,“ titulo ”和“ post_id ”是名为“posts”的表的列名:
public function ajaxSearch()
{
helper(['form', 'url']);
$data = [];
$db = \Config\Database::connect();
$builder = $db->table('posts');
$query = $builder->like('titulo', $this->request->getVar('q')) //this is line 31
->select('post_id, titulo as text')
->limit(10)->get();
$data = $query->getResult();
echo json_encode($data);
}
此外,一些图像没有正确加载,浏览器给出了一个状态码:200 虽然内容类型是“text/html”,我检查了图像路径并且它是正确的。但是,以下消息显示在开发工具的网络选项卡中。
“DevTools 无法加载 SourceMap:无法加载 chrome-extension://pmncamalnkoafdfdmojmhanhngjaakcb/browser-polyfill.js.map 的内容:HTTP 错误:状态代码 404,net::ERR_UNKNOWN_URL_SCHEME”
解决方案
对于异常
你得到:你正在向q
参数传递空值,发生异常是因为它就像调用:$query = $builder->like('titulo', null)
,这不会发生,只接受字符串作为like
方法的第二个参数。
要解决此问题,请在使用之前验证您的参数:
$titulo = '';
if ( ! empty( $titulo ) ) {
$titulo = $this->request->getVar('q');
}
$query = $builder->like('titulo', $titulo);
更好的方法是通过表单验证。
图片问题
您必须检查如何将图像返回给您的客户。如果您直接从 an 返回图像,echo
则会出现这种错误。
最好的方法是在您的应用服务器级别解决这个问题。
SourceMap 错误
不是什么大问题,这不会妨碍你的应用。看看这个 StackOverflow 的问题。
推荐阅读
- java - 我需要一个程序,它会要求用户在文件中逐行输入要保存的信息。我该怎么做?
- shopify - 从产品描述中删除图像
- c# - VS 2019 中的 CustomVisualizer 扩展
- django - 为什么 Django serializer.data 步骤很慢?
- python - 如何将正则表达式找到的字符串从一个文件复制到另一个文件,同时保持两个文件的结构?
- java - Java 12.0.1 中的 JavaFX
- wso2 - 如何在 WSO2 API Manager 中发布隐藏在 Spring Cloud Gateway/自定义网关后面的 API
- python - 尝试使用子进程捕获输出时得到奇怪的结果
- mysql - 连接表上的mysql更新是否一致?
- neo4j - neo4j - 返回单个节点实例 - 按属性查询?