php连接数据库,不用thinkphp框架

<?php
/**
 * Created by PhpStorm.
 * User: yanjin
 * Date: 2021/6/26
 * Time: 10:04
 */
$dbms='mysql';     //数据库类型
$host='localhost'; //数据库主机名

$dbName='spider';    //使用的数据库
$user='root';      //数据库连接用户名
$pass='root';          //对应的密码
$dsn="$dbms:host=$host;dbname=$dbName";


try {
    // $dbh = new PDO($dsn, $user, $pass); //初始化一个PDO对象
    // echo "连接成功<br/>";
    /*你还可以进行一次搜索操作
    foreach ($dbh->query('SELECT * from FOO') as $row) {
        print_r($row); //你可以用 echo($GLOBAL); 来看到这些值
    }
    */
    // $dbh = null;
    $dbh = new PDO($dsn, $user, $pass);
    $dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE , PDO::FETCH_ASSOC );
} catch (PDOException $e) {
    die ("Error!: " . $e->getMessage() . "<br/>");
}
//默认这个不是长连接,如果需要数据库长连接,需要最后加一个参数:array(PDO::ATTR_PERSISTENT => true) 变成这样:
// $db = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));

tp5,第二个数据库连接

public function index()
{
    $db =
        [
            // 数据库类型
            'type'          => 'mysql',
            // 服务器地址
            'hostname'       => 'rm.mysql.rds.aliyuncs.com',
            //'hostname'       => 'rm.mysql.rds.aliyuncs.com',
            // 数据库名
            'database'       => 'kehu',
            // 用户名
            'username'       => 'kehu',
            // 密码
            'password'       => 'SHpw',
            // 端口
            'hostport'       => '3306',
            // 连接dsn
            'dsn'           => '',
            // 数据库连接参数
            'params'         => [],
            // 数据库编码默认采用utf8
            'charset'        => 'utf8',
            // 数据库表前缀
            'prefix'         => '',
            // 数据库调试模式
            'debug'             => true,
            // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
            'deploy'         => 0,
            // 数据库读写是否分离 主从式有效
            'rw_separate'     => false,
            // 读写分离后 主服务器数量
            'master_num'      => 1,
            // 指定从服务器序号
            'slave_no'       => '',
            // 自动读取主库数据
            'read_master'     => false,
            // 是否严格检查字段是否存在
            'fields_strict'       => true,
            // 数据集返回类型
            'resultset_type'   => 'array',
            // 自动写入时间戳字段
            'auto_timestamp'   => false,
            // 时间字段取出后的默认时间格式
            'datetime_format'  => 'Y-m-d H:i:s',
            // 是否需要进行SQL性能分析
            'sql_explain'     => false,
        ];
    
    $list = Db::connect($db)
        -> name('rockphp_live_kj')
        -> where('id', '>', 0)
        -> order('id', 'DESC')
        //-> page($page, 50)
            -> limit(12)
        -> select();
    
    //dump($list);die();
    //$list = json_encode($list,true);
    $this->assign('list',$list);
    return view();
}

php psr4规范

php psr4规范

参考文章:
1、类、方法、常量的定义和副操作(输出结果,处理数据)只能同时存在一种
2、命名空间和类必须遵循PSR-4自动加载器标准。(大驼峰,文件名和命名空间大小写一致)
3、类、成员方法大括号要单独一行
4、类名采用大驼峰,变量、方法名、函数名采用小驼峰,常量采用大写+下划线
5、控制语法小括号外侧1个空格,第一个大括号跟在小括号同行
6、php文件以<?php开头,代码最后空一行,?>不写
7、缩进采用4个空格
8、函数,方法的多个参数,逗号后要留1个空格
9、关键字小写
10、每一行不超过80个字符,结尾不要有空格
11、文件最后留一行空格
12、必要注释和空行,提高可读性
————————————————
版权声明:本文为CSDN博主「古月的博客」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34345149/article/details/122260379

php:get_file_contents的json获取失败

访问xxx路径会返回json格式的数据,简单点,我用file_get_contents进行获取,发现解析不出来,显示是string类型数据,非json格式,也就是个格式不对。
但是我直接拿路径返回的数据解析是ok的,也就是说file_get_contents获取的数据有所不同。
后来查了下资料,提示说file_get_contents得到的数据前面有三个看不到的字符,所以代码修改如下,仅供参考:

$url = “xxx”; //请求的路径
$result = substr(file_get_contents($url),3);
$result = json_decode($result);
return $result;

代码片断:js:tab切换

<code></code>
<div class=”gzzxq_toub-two-row”>
<div class=”item active”>专利</div>
<div class=”item”>论文</div>
<div class=”item”>成果</div>
<div class=”item”>新品种</div>
<div class=”item”>新技术引进</div>
<div class=”item”>新材料</div>
<div class=”item”>其他</div>
</div>
<div class=”main “>{volist name=”research_list” id=”item”}
{if empty($item)}
<div class=”mains{$key+1}” style=”display: none;”><a href=”#”>暂无科研产出</a></div>
{else}
<div class=”mains{$key+1}”>
<div class=”gzzxq-main-nr”>
<ul class=”gzzxq-main-nr_list”>
<li style=”list-style-type: none;”>
<ul class=”gzzxq-main-nr_list”>{volist name=”item” id=”iitem”}
<li><a href=”#”>{$iitem.biaoti}</a></li>
</ul>
</li>
</ul>
{/volist}

</div>
</div>
{/if}
{/volist}

<code>

 

<script>
window.onload=chengjiu();
function chengjiu(){
console.log($(“.main>div:first-child”));
$(“.main>div:first-child”)[0].style.cssText = “display:block;”;
$(‘.gzzxq_toub-two-row .item’).click(function () {
$(‘.gzzxq_toub-two-row .item’).removeClass(‘active’)
$(this).addClass(‘active’)
// if($(this))
// if($(“.main div”)){
// console.log($(“.main>div”)[0].style.cssText = “display:none”);
// };
$(“.main>div”).hide()
$(“.main>div”).eq($(this).index()).show()
// console.log($(“.main>div”).eq($(this).index()))
})
$(“.center-top-rows-span1″).each(function () {
var str = $(this).html();
var subStr = str.substring(0, 16);
$(this).html(subStr + (str.length > 16 ? ‘…’ : ”));
});
}
</script>

如果list是常量,则可以直接用IN, 否则要用find_in_set()函数。

MySQL手册中find_in_set函数的语法解释:

FIND_IN_SET(str,strlist)

str 要查询的字符串

strlist 字段名 参数以”,”分隔 如 (1,2,6,8,10,22)

查询字段(strlist)中包含(str)的结果,返回结果为null或记录

假如字符串str在由N个子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。 一个字符串列表就是一个由一些被 ‘,’ 符号分开的子链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则FIND_IN_SET() 函数被优化,使用比特计算。 如果str不在strlist 或strlist 为空字符串,则返回值为 0 。如任意一个参数为NULL,则返回值为 NULL。这个函数在第一个参数包含一个逗号(‘,’)时将无法正常运行。

继续阅读