PHP学习遇到的错误集合

使用JQ的ajax如果将数据类型dataType=“json”,那么就一直报出字符串错误,结果直接去除了dataType后就可以传送数据进去了。

var data_json = {"t":cnt2};
        $.ajax({
            url:"index.php",
            type:"POST",
            async:true,
            data:data_json,
            success:function(){
                //alert("success!");
            },
             error: function(XMLHttpRequest, textStatus, errorThrown) {
                alert(XMLHttpRequest.status);
                alert(XMLHttpRequest.readyState);
                alert(textStatus);
            },
            complete: function(XMLHttpRequest, textStatus) {
                this; // 调用本次AJAX请求时传递的options参数
            }
        });


结果发现自己傻逼了,ajax数据传送是固定的格式不用规定格式,反而如果是php传到ajax那里才需要规定返回到ajax的数据类型dataType。看到版主大大的话才恍然大悟。




(2)单引号和双引号在转义中的区别




(3)数组的赋值问题

在使用php数组的时候,遇到了一个问题。那就是如果使用了$arr[]=值的时候,一直用的话会导致里面的值一直加,这个就相当于push的操作一样,所以要重新使用,那么就要清空了再放东西进去,使用unset函数就可以了。


(4)判断空值

See how php parses different values. $var is the variable.

$var        =    NULL    ""    0    "0"    1

strlen($var)    =    0    0    1    1    1
is_null($var)    =    TRUE    FALSE    FALSE    FALSE    FALSE
$var == ""    =    TRUE    TRUE    TRUE    FALSE    FALSE
!$var        =    TRUE    TRUE    TRUE    TRUE    FALSE
!is_null($var)    =    FALSE    TRUE    TRUE    TRUE    TRUE
$var != ""    =    FALSE    FALSE    FALSE    TRUE    TRUE
$var        =    FALSE    FALSE    FALSE    FALSE    TRUE

Peace!


(5)在命令行和浏览器中的错误

在使用浏览器的时候我们可以使用$var=[]这种形式来表示一个数组,而在命令行中用这种形式是会报错的,所以不能使用这种方式定义数组,要使用Array这个来表示。之后就不会出现错误了。


(6)MySQLi 预处理语句

在使用这个预处理的语句的时候,一直显示类型出错,之后看了官方文档才知道,原来bind_param这个函数的第一个参数是要规定?是什么类型的,类型表如下:

Typspezifizierer
Zeichen Beschreibung
idie entsprechende Variable hat den Typ integer
ddie entsprechende Variable hat den Typ double
sdie entsprechende Variable hat den Typ string
bdie entsprechende Variable ist ein BLOB und wird paketweise geschickt

(7)php的pdo的bindParam使用上的坑点

在使用pdo的bindParams上,结合foreach来进行每个值的绑定。结果发现绑定后的值都是最后的值,完全不是一一对应关系。之后查资料发现,原来bindParam第二个参数是引用,所以每次的绑定其实都是同一个变量的引用,所以一直都会是最后面那个值,所以要解决这个问题可以使用bindValue或者是在foreach($array as $k=>&$v)这样子赋值。

(8)php的pdo错误处理

在使用pdo的时候,很多错误无法显示,因为没有使用正确的错误显示方式而已。这里面有三种方法:

  • PDO::ERRMODE_SILENT

    此为默认模式。 PDO 将只简单地设置错误码,可使用 PDO::errorCode() 和 PDO::errorInfo() 方法来检查语句和数据库对象。如果错误是由于对语句对象的调用而产生的,那么可以调用那个对象的 PDOStatement::errorCode() 或 PDOStatement::errorInfo() 方法。如果错误是由于调用数据库对象而产生的,那么可以在数据库对象上调用上述两个方法。

  • PDO::ERRMODE_WARNING

    除设置错误码之外,PDO 还将发出一条传统的 E_WARNING 信息。如果只是想看看发生了什么问题且不中断应用程序的流程,那么此设置在调试/测试期间非常有用。

  • PDO::ERRMODE_EXCEPTION

    除设置错误码之外,PDO 还将抛出一个 PDOException 异常类并设置它的属性来反射错误码和错误信息。此设置在调试期间也非常有用,因为它会有效地放大脚本中产生错误的点,从而可以非常快速地指出代码中有问题的潜在区域(记住:如果异常导致脚本终止,则事务被自动回滚)。

    异常模式另一个非常有用的是,相比传统 PHP 风格的警告,可以更清晰地构建自己的错误处理,而且比起静默模式和显式地检查每种数据库调用的返回值,异常模式需要的代码/嵌套更少。

实例:

try {
    $dbh = new PDO($dsn, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
    exit;
}




------------------------------持续更新-----------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值