相关疑难解决方法(0)

参考:什么是使用MySQL扩展的完美代码示例?

这是为了创建社区学习资源.目标是获得良好代码的示例,这些代码不会重复在复制/粘贴的PHP代码中经常出现的可怕错误.我已经要求它成为社区维基.

不是一个编码竞赛.这不是要找到最快或最紧凑的查询方式 - 它是为新手提供一个好的,可读的参考.

每天都有大量的问题与使用Stack Overflow上的函数系列的非常糟糕的代码片段大量涌现mysql_*.虽然通常最好将这些人引向PDO,但它有时既不可能(例如继承的遗留软件)也不是现实的期望(用户已经在他们的项目中使用它).

使用该mysql_*库的代码的常见问题包括:

  • SQL注入值
  • LIMIT子句和动态表名中的SQL注入
  • 没有错误报告("为什么此查询不起作用?")
  • 报告错误报告(即,即使代码投入生产,也会发生错误)
  • 跨值脚本(XSS)注入值输出

让我们编写一个PHP代码示例,使用mySQL_*系列函数执行以下操作:

  • 接受两个POST值,id(数字)和name(一个字符串)
  • 对表执行UPDATE查询tablename,name使用ID 更改行中的列id
  • 失败时,请优雅退出,但仅在生产模式下显示详细错误.trigger_error()就足够了; 或者使用您选择的方法
  • 输出消息" $name已更新".

没有显示上面列出的任何弱点.

它应该尽可能简单.理想情况下,它不包含任何函数或类.目标不是创建一个复制/可粘贴的库,而是显示为使数据库查询安全所需要做的最少的事情.

好评如有好处.

目标是使这个问题成为用户在遇到问题提供者时可以链接到的资源(即使它根本不是问题的焦点),或者遇到错误的查询而不是知道如何解决它.

要抢先讨论PDO讨论:

是的,将这些问题的个人指向PDO往往更为可取.如果是一种选择,我们应该这样做.然而,这并不总是可能的 - 有时,提问者正在处理遗留代码,或者已经在这个库中走了很长一段路,并且现在不太可能改变它.此外,mysql_*如果正确使用,功能系列是完全安全的.所以请不要在这里"使用PDO".

php mysql security sql-injection

60
推荐指数
2
解决办法
2650
查看次数

如何访问数组/对象?

我有以下数组,当我这样做时print_r(array_values($get_user));,我得到:

Array (
          [0] => 10499478683521864
          [1] => 07/22/1983
          [2] => email@saya.com
          [3] => Alan [4] => male
          [5] => Malmsteen
          [6] => https://www.facebook.com  app_scoped_user_id/1049213468352864/
          [7] => stdClass Object (
                   [id] => 102173722491792
                   [name] => Jakarta, Indonesia
          )
          [8] => id_ID
          [9] => El-nino
          [10] => Alan El-nino Malmsteen
          [11] => 7
          [12] => 2015-05-28T04:09:50+0000
          [13] => 1
        ) 
Run Code Online (Sandbox Code Playgroud)

我尝试按如下方式访问数组:

echo $get_user[0];
Run Code Online (Sandbox Code Playgroud)

但这显示了我:

未定义0

注意:

我从Facebook SDK 4获得这个数组,所以我不知道原来的阵列结构.

我怎样才能email@saya.com从数组中获取值作为示例?

php arrays properties class object

58
推荐指数
2
解决办法
5万
查看次数

你可以在PHP中将变量追加到变量吗?

为什么输出0?它适用于数字而不是字符串.我在Javascript中有类似的代码也可以.PHP不喜欢带字符串的+ =吗?

<?php
    $selectBox = '<select name="number">';
    for ($i=1; $i<=100; $i++)
    {
        $selectBox += '<option value="' . $i . '">' . $i . '</option>';
    }
    $selectBox += '</select>';

    echo $selectBox;
?>
Run Code Online (Sandbox Code Playgroud)

php string operators

57
推荐指数
2
解决办法
17万
查看次数

"==="是什么意思?

我注意到有人使用PHP操作符===,我无法理解.我已经尝试了一个功能,它以疯狂的方式对应.

这个运算符的定义是什么?我甚至无法在PHP运算符的声明中找到它.

php operators comparison-operators identity-operator

55
推荐指数
5
解决办法
6万
查看次数

当与echo和return连接时,句点和逗号之间的差异?

我发现这会起作用:

echo $value , " continue";
Run Code Online (Sandbox Code Playgroud)

但这不是:

return $value , " continue";
Run Code Online (Sandbox Code Playgroud)

而"." 适用于两者.

句号和逗号之间有什么区别?

php compare function concatenation language-construct

54
推荐指数
7
解决办法
3万
查看次数

PHP中变量名前的'at'符号:@ $ _ POST

我已经看到函数调用前面有一个at符号来关闭警告.今天我在浏览一些代码,发现了这个:

$hn = @$_POST['hn'];
Run Code Online (Sandbox Code Playgroud)

这会有什么用处?

php error-handling operators

51
推荐指数
3
解决办法
3万
查看次数

参考 - 有关PDO的常见问题解答

这是什么?

这是有关PHP数据对象的常见问题列表

为什么是这样?

由于PDO具有常规PHP用户未知的某些功能,因此有关PDO中的预准备语句和错误处理的问题非常频繁.所以,这只是一个可以找到它们的地方.

我该怎么办?

如果您的问题已与此列表密切相关,请在下面找到您的问题并将修复程序应用于您的代码.对其他问题进行简要介绍也是一个好主意,让自己为其他常见陷阱做好准备.

列表

也可以看看

php pdo

50
推荐指数
3
解决办法
7614
查看次数

PHP中的C#的空合并运算符(??)

在PHP中是否有像??C#一样的三元运算符?

?? 在C#中是干净和短,但在PHP中,你必须做的事情如下:

// This is absolutely okay except that $_REQUEST['test'] is kind of redundant.
echo isset($_REQUEST['test'])? $_REQUEST['test'] : 'hi';

// This is perfect! Shorter and cleaner, but only in this situation.
echo null? : 'replacement if empty';

// This line gives error when $_REQUEST['test'] is NOT set.
echo $_REQUEST['test']?: 'hi';
Run Code Online (Sandbox Code Playgroud)

php ternary-operator null-coalescing-operator php-7

49
推荐指数
4
解决办法
1万
查看次数

PHP字符串连接

我需要知道是否可以连接字符串,如下所示?如果没有,那么这样做的替代方案是什么?

while ($personCount < 10) {
$result+= $personCount . "person ";
}

echo $result;
Run Code Online (Sandbox Code Playgroud)

它应该像1 person 2 person 3人等......

你不能使用+登录连接,那么替代方案是什么?

php string-concatenation

49
推荐指数
4
解决办法
14万
查看次数

PHP中&和&&之间的区别

我很困惑&&&.我有两本PHP书.一个人说他们是一样的,但另一个说他们是不同的.我以为他们也一样.

他们不一样吗?

php

48
推荐指数
4
解决办法
4万
查看次数