这是为了创建社区学习资源.目标是获得良好代码的示例,这些代码不会重复在复制/粘贴的PHP代码中经常出现的可怕错误.我已经要求它成为社区维基.
这不是一个编码竞赛.这不是要找到最快或最紧凑的查询方式 - 它是为新手提供一个好的,可读的参考.
每天都有大量的问题与使用Stack Overflow上的函数系列的非常糟糕的代码片段大量涌现mysql_*.虽然通常最好将这些人引向PDO,但它有时既不可能(例如继承的遗留软件)也不是现实的期望(用户已经在他们的项目中使用它).
使用该mysql_*库的代码的常见问题包括:
让我们编写一个PHP代码示例,使用mySQL_*系列函数执行以下操作:
id(数字)和name(一个字符串)tablename,name使用ID 更改行中的列idtrigger_error()就足够了; 或者使用您选择的方法$name已更新".并没有显示上面列出的任何弱点.
它应该尽可能简单.理想情况下,它不包含任何函数或类.目标不是创建一个复制/可粘贴的库,而是显示为使数据库查询安全所需要做的最少的事情.
好评如有好处.
目标是使这个问题成为用户在遇到问题提供者时可以链接到的资源(即使它根本不是问题的焦点),或者遇到错误的查询而不是知道如何解决它.
要抢先讨论PDO讨论:
是的,将这些问题的个人指向PDO往往更为可取.如果是一种选择,我们应该这样做.然而,这并不总是可能的 - 有时,提问者正在处理遗留代码,或者已经在这个库中走了很长一段路,并且现在不太可能改变它.此外,mysql_*如果正确使用,功能系列是完全安全的.所以请不要在这里"使用PDO".
我有以下数组,当我这样做时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从数组中获取值作为示例?
为什么输出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操作符===,我无法理解.我已经尝试了一个功能,它以疯狂的方式对应.
这个运算符的定义是什么?我甚至无法在PHP运算符的声明中找到它.
我发现这会起作用:
echo $value , " continue";
Run Code Online (Sandbox Code Playgroud)
但这不是:
return $value , " continue";
Run Code Online (Sandbox Code Playgroud)
而"." 适用于两者.
句号和逗号之间有什么区别?
我已经看到函数调用前面有一个at符号来关闭警告.今天我在浏览一些代码,发现了这个:
$hn = @$_POST['hn'];
Run Code Online (Sandbox Code Playgroud)
这会有什么用处?
这是有关PHP数据对象的常见问题列表
由于PDO具有常规PHP用户未知的某些功能,因此有关PDO中的预准备语句和错误处理的问题非常频繁.所以,这只是一个可以找到它们的地方.
如果您的问题已与此列表密切相关,请在下面找到您的问题并将修复程序应用于您的代码.对其他问题进行简要介绍也是一个好主意,让自己为其他常见陷阱做好准备.
也可以看看
在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) 我需要知道是否可以连接字符串,如下所示?如果没有,那么这样做的替代方案是什么?
while ($personCount < 10) {
$result+= $personCount . "person ";
}
echo $result;
Run Code Online (Sandbox Code Playgroud)
它应该像1 person 2 person 3人等......
你不能使用+登录连接,那么替代方案是什么?