PHPの筆記試験の問題

Jun 13, 2016 pm 01:03 PM
echo gt lt mysql php

PHP 筆記試験の問題

?

1. PHP を使用して前日の時刻を出力します。形式は 2012-2-3 8:50:21

  echo date('Y-m-d H:i:s',time()-60*60*24
  echo date("Y:m:d H:i:s",strtotime("-1 day"));
ログイン後にコピー

?

2. echo()、print()、print_r() の違い

Echo は戻り値のない言語構造です。

print 関数は基本的に echo と同じです。違いは、print が戻り値を持つ関数であることです。

print_r は再帰的印刷であり、配列オブジェクトの出力に使用されます

?

3. HTMLとPHPを別々に使用できるテンプレート

実際、PHP 自体は私が使用したテンプレート エンジンです。一般的なものには、PHPLib、FastTemplate、Savant があります。

http://www.sitepoint. com /forums/showthread.php?t=123769

?

4. バージョン管理にはどのようなツールが使用されますか?

CVS と SVN、SVN は次世代の CVS として知られており、強力な機能を備えていますが、CVS は高いシェアを誇る古いブランドであり、問​​題はどのツールを使用するかです。使用? ツール、これは次のように答える必要があるかもしれません。サーバーとして Apache 上の CVS サーバー、クライアントとして WinCVS を使用します。 Apache/DAV がサーバーとして使用され、TortoiseSVN がクライアントとして使用され、または Subclipse がクライアントとして使用されます

?

5.

文字列の反転を実現するにはどうすればよいですか?

? 実際、PHP 自体には strrev() という文字列反転関数があります。echo strrev($str); を試してみてもよいでしょう。ただし、3 つの方法すべてでは中国語の文字列反転の問題を解決できず、エラーが発生します。

function reverse($var)
{
    $res="";
    for($i=0,$j=strlen($var);$i<$j;$i++)
     {
        $res=$var[$i].$res;
     }
    return $res;
}
$tmpvar="wofang";
$res=reverse($tmpvar);
echo $res;
ログイン後にコピー
?

6. MYSQL データベースを最適化する方法。

(1)。データベース設計に関しては、これは DBA とアーキテクトの責任です。適切に構造化されたデータベースを設計し、必要に応じて非正規化します (英語では denormalize です。中国語翻訳)、部分的なデータの冗長性を許可し、JOIN 操作を回避してクエリ効率を向上させます (2) システム アーキテクチャ設計の観点から、テーブル ハッシュは、大量のデータを複数の異なるテーブルにハッシュするために使用されます。高速テーブルには最新のデータのみが保持され、低速テーブルは履歴アーカイブとなります。サーバー 読み取りおよび書き込み、サーバーからの読み取り専用、または N 個のサーバー、各マシンは相互のマスターです
(3) (1) と (2) は PHP Programmer の要件を超えていますが、インデックスが少なくても問題ありません。 (4) 効率的な SQL ステートメントを作成し、デカルト積を生成する完全結合、多数の Group By および order by、制限なしなど、非効率な SQL ステートメントがないかどうかを確認します。必要に応じて、データベースのロジックを変更します。クエリ結果は DBMS 側のストアド プロシージャにカプセル化され、各 SQL ステートメントが説明されます
​ (5). 取得するものはすべて必須です。記事のコメント数をクエリするなど、データベースから必要なデータを取得します。ここで、article_id を選択します。 = ? 以上です。最初に * を選択しないでください... ここで、article_id = ? の後に msql_num_rows.
たとえば、記事を変更する場合、ユーザーがタイトルのみを変更する場合は、次のように設定します。 (6). 必要に応じて別のストレージ エンジンを使用すると、HEAP によりクエリ速度が大幅に向上します。

?
7.

中国語の文字列を文字化けせずにインターセプトする方法。

?? mb_substr()

? 8.php パスリファレンス

$empty = '';
$null = NULL;
$bool = FALSE;
$notSet;
$array = array();

//以下是问题
$a = "hello";
$b = &$a;
unset($b);
$b = "world"; 
//答案为:hello
echo $a;
ログイン後にコピー

?

<?php
$empty = '';
$null = NULL;
$bool = FALSE;
$notSet;
$array = array();
//以下是问题
$a = 1;
$x = &$a;
$b = $a++; 

//以下为答案:1
echo $b;
?>
ログイン後にコピー
<?php
$empty = '';
$null = NULL;
$bool = FALSE;
$notSet;
$array = array();
//以下是问题
$x = empty($array);

//以下为答案:true
echo $x?"true":"false";
?>
ログイン後にコピー

9. PHP を使用して、クライアント IP とサーバー IP を表示するコードを記述します。 ?

10. サーバーとローカルマシンの IP を取得します

?
打印客户端IP:echo $_SERVER[‘REMOTE_ADDR’]; 或者: getenv('REMOTE_ADDR');
 打印服务器IP:echo gethostbyname("http://www.baidu.com/")
ログイン後にコピー
11. Web ページ上のすべての JS/VBS スクリプトをフィルタリングするための正規表現を記述します (つまり、script タグとそのコンテンツを削除します)。

?
//本页地址,SCRIPT_NAME也可以:php/test.php
echo $_SERVER['PHP_SELF']."<br />";
//链接到当前页面的前一页面的 URL 地址:
echo $_SERVER['HTTP_REFERER']."<br />";

//其它的见参考手册:语言参考》变量》预定义变量
//前执行脚本的绝对路径名:D:Inetpubwwwrootphp est.php
echo $_SERVER["SCRIPT_FILENAME"]."<br />";
//正在浏览当前页面用户的 IP 地址:127.0.0.1
echo $_SERVER["REMOTE_ADDR"]."<br />";
//查询(query)的字符串(URL 中第一个问号 ? 之后的内容):id=1&bi=2
echo $_SERVER["QUERY_STRING"]."<br />";
//当前运行脚本所在的文档根目录:d:inetpubwwwroot
echo $_SERVER["DOCUMENT_ROOT"]."<br />";
ログイン後にコピー

12. ファイル http.conf で PHP をインストールします。まず、ステートメント ____ を使用して、PHP モジュール

を動的にロードします。 次に、ステートメント ____ を使用して、拡張子 php を持つすべてのファイルを Apache に PHP スクリプトとして処理させます。
$script="以下内容不显示:<script language='javascript'>alert('cc');</script>";
echo preg_replace("/<script[^>].*?>.*?</script>/si", "替换内容", $script);
ログイン後にコピー
答え: LoadModule php5_module "c:/php/php5apache2.dll";AddType application/x-httpd-php .php

?


13. include ステートメントと require ステートメントは、現在のファイルに別のファイルをインクルードできます。これらの違いは、同じファイルを複数回インクルードすることを避けるために、代わりにステートメント ____ を使用することができます。
回答: 失敗の処理方法、

include()

require()

中に警告を生成します require_once()/include_once()
は致命的なエラーになります。 ? 14. SQL における LEFT JOIN の意味は、tbl_user が学生の名前 (名前) と学生番号 (ID) を記録する場合、 tbl_score は、学生の学生番号 (ID)、テストの得点 (スコア)、および試験科目 (主題) を記録します (名前を印刷したい場合は、試験後に退学になった学生もいます)。各学生と対応する科目の合計スコアについては、SQL ステートメント ____ を使用できます。

答え: 自然左外部結合


?

15. PHP では、ヒアドキュメントは特別な文字列であり、その終了マークは____

でなければなりません。 回答: 終了識別子が配置されている行には、「;」
create database phpinterview;
use phpinterview
create table tbl_user
(
    ID                             int                            not null,
    name                           varchar(50)                    not null,
   primary key (ID)
);
create table tbl_score
(
    ID                             int                            not null,
    score                          dec(6,2)                       not null,
    subject                        varchar(20)                    not null
);

insert into tbl_user (ID, name) values (1, 'beimu');
insert into tbl_user (ID, name) values (2, 'aihui');
insert into tbl_score (ID, score, subject) values (1, 90, '语文');
insert into tbl_score (ID, score, subject) values (1, 80, '数学');
insert into tbl_score (ID, score, subject) values (2, 86, '数学');
insert into tbl_score (ID, score, subject) values (2, 96, '语文');

select A.id,sum(B.score) as sumscore
from tbl_user A left join tbl_score B
on A.ID=B.ID
group by A.id
ログイン後にコピー
以外の文字を含めることはできません。

?

16.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。

function my_scandir($dir)
{
    $files=array();
    if(is_dir($dir))
     {
        if($handle=opendir($dir))
         {
            while(($file=readdir($handle))!==false)
             {
                if($file!="." && $file!="..")
                 {
                    if(is_dir($dir."/".$file))
                     {
                        $files[$file]=my_scandir($dir."/".$file);
                     }
                    else
                     {
                        $files[]=$dir."/".$file;
                     }
                 }
             }
            closedir($handle);
            return $files;
         }        
     }    
}
print_r(my_scandir("D:Program FilesInternet ExplorerMUI"));
ログイン後にコピー

?

17.以下哪一句不会把 John 新增到 users 阵列?
$users[] = 'john';
成功把 John 新增到阵列 users。
array_add($users,’john’);
函式 array_add() 无定义。
array_push($users,‘john’);
成功把 John 新增到阵列 users。
$users ||= 'john';
语法错误。

?

18.sort()、assort()、和 ksort() 有什么分别?它们分别在什么情况下使用?

sort()
根据阵列中元素的值,以英文字母顺序排序,索引键会由 0 到 n-1 重新编号。主要是当阵列索引键的值无关疼痒时用来把阵列排序。
assort()
PHP 没有 assort() 函式,所以可能是 asort() 的笔误
asort()
与 sort() 一样把阵列的元素按英文字母顺序来排列,不同的是所有索引键都获得保留,特别适合替联想阵列排序。
ksort()
根据阵列中索引键的值,以英文字母顺序排序,特别适合用于希望把索引键排序的联想阵列。

?

19.以下的代码会产生什么?为什么?

$num =10 ;
function multiply( ) {
$num =$num *10 ;
}
multiply( ) ;
echo $num ;

由于函式 multiply() 没有指定 $num 为全域变量(例如 global $num 或者 $_GLOBALS['num']),所以 $num 的值是 10。

?

20.reference 跟一个正规的变量有什么分别?如何 pass by reference?在什么情况下我们需要这样做?
Reference 传送的是变量的地址而非它的值,所以在函式中改变一个变量的值时,整个应用都见到这个变量的新值。
一个正规变量传送给函式的是它的值,当函式改变这个变量的值时,只有这个函式才见到新值,应用的其他部分仍然见到旧值。

<span style="color: #ff0000;">$myVariable = "its' value";
Myfunction(&$myVariable); // 以 reference 传送参数</span>


ログイン後にコピー

以 reference 传送参数给函式,可以使函式改变了的变量,即使在函式结束后仍然保留新值。

?

21.哪些函式可以用来在现正执行的脚本中插入函式库?
对这道题目不同的理 解会有不同的答案,我的第一个想法是插入 PHP 函式库不外乎 include()、include_once()、require()、require_once(),但细心再想,“函式库”也应该包括 com 物件和 .net 函式库,所以我们的答案也要分别包括 com_load 和 dotnet_load,下次有人提起“函式库”的时候,别忘记这两个函式。

?

22.foo() 与 @foo() 有什么分别?
foo() 会执行这个函式,任何解译错误、语法错误、执行错误都会在页面上显示出来。
@foo() 在执行这个函式时,会隐藏所有上述的错误讯息。
很多应用程式都使用 @mysql_connect() 和 @mysql_query 来隐藏 mysql 的错误讯息,我认为这是很严重的失误,因为错误不该被隐藏,你必须妥善处理它们,可能的话解决它们。

?

23.你如何替 PHP 的应用程式侦错?
我并不常这样做,我曾经试过很多不同的侦错工具,在 Linux 系统中设定这些工具一点也不容易。不过以下我会介绍一个近来颇受注目的侦错工具。
PHP - Advanced PHP Debugger 或称 PHP - APD,第一步是执行以下的指令安装:

pear install apd安装后在你的脚本的开头位置加入以下的语句开始进行侦错:

apd_set_pprof_trace();执行完毕,打开以下档案来查阅执行日志:
apd.dumpdir
你也可以使用 pprofp 来格式化日志。
详细的资料可以参阅 http://us.php.net/manual/en/ref.apd.php 。

?

24.「===」とは何ですか? 「==」は true ですが、「===」は false である例を示します。
「===」は、ブール値「false」を返すことができる関数、またはブール値ではないが「false」値を割り当てることができる関数を表します。strpos() と strrpos() はその 2 つです。例。
質問の 2 番目の部分は少し難しく、「== は false ですが、「===」は true である例を考えるのは簡単ですが、その逆が true である例はほとんどありません。しかし、最終的に次の例を見つけました:

if (strpos("abc", "a") == true){??? // "a" の位置が 0 であるため、この部分は実行されず、ブール値 "false" に変換されます。}if (strpos("abc", "a") === true){??? // 「===」により、関数 strpos() によって返される値がブール値に変換されないことが保証されるため、この部分が実行されます。}

?

25.nclude と include_once の違いは何ですか?要求についてはどうですか?
3 つはすべて、url_allow_fopen が承認されているかどうかに応じて、他のファイルをスクリプトに挿入するために使用されます。このファイルはシステムの内部または外部から取得できます。しかし、それらの間には微妙な違いもあります:
include(): この関数を使用すると、同じファイルをスクリプトに複数回挿入できます。ファイルが存在しない場合は、システム警告が発行され、スクリプトの実行が続行されます。
include_once(): include() と同様の関数があり、その名前が示すように、関連するファイルはスクリプトの実行中に 1 回だけ挿入されます。
require(): include() と同様に、他のファイルをスクリプトに挿入するためにも使用されますが、ファイルが存在しない場合はシステム警告が発行され、致命的なエラーが発生し、スクリプトが中止されます。実行

?

26.ブラウザを別のページにリダイレクトできる関数は次のうちどれですか?
redir()
これは PHP 関数ではないため、実行エラーが発生します。
header()
これが正解です。 header() はヘッダー情報を挿入するために使用され、ブラウザーを別のページにリダイレクトするために使用できます。例:
header("場所:
http://www.search-this.com/ ");
location()
これは PHP 関数ではないため、実行エラーが発生します。
リダイレクト()
これは PHP 関数ではないため、実行エラーが発生します。

?

27.ファイルを開いて読み書きできる関数は次のうちどれですか?
fget()
これは PHP 関数ではないため、実行エラーが発生します。
file_open()
これは PHP 関数ではないため、実行エラーが発生します。
fopen()
これが正解です。fopen() は、ファイルを読み書きするために使用できます。詳細については、php.net を参照してください。
open_file()
これは PHP 関数ではないため、実行エラーが発生します。

?

28.mysql_fetch_row() と mysql_fetch_array() の違いは何ですか?
mysql_fetch_row() データベース列を 0 から始まる配列に格納します。最初の列は配列のインデックス 0、2 番目の列はインデックス 1 などになります。 mysql_fetch_assoc() たとえば、データベースの列を連想配列に格納すると、配列のインデックスはフィールド名になります。 「email」のフィールドは 3 つあり、配列のインデックスは「first_name」、「last_name」、「email」です。 mysql_fetch_array() mysql_fetch_row() と mysql_fetch_assoc() の値は同時に送り返すことができます。

?

29.次のコードは何に使用されますか?説明してください。

$date='08/26/2003';print ereg_replace("([0-9]+)/([0-9]+)/([0-9]+)"," \2/\1/\3",$date );

これは、日付を MM/DD/YYYY 形式から DD/MM/YYYY 形式に変換します。私の友人は、この正規表現は次のステートメントに分解できると教えてくれました。これは単に説明の便宜のためであり、分解する必要はありません。

// 对应一个或更多 0-9,后面紧随一个斜号$regExpression = "([0-9]+)/";// 应一个或更多 0-9,后面紧随另一个斜号$regExpression .= "([0-9]+)/";// 再次对应一个或更多 0-9$regExpression .= "([0-9]+)";至于 \\2/\\1/\\3 则是用来对应括号,第一个括号对的是月份,第二个括号对应的是日期,第三个括号对应的是年份。

?

30.给你一行文字 $string,你会如何编写一个正规表达式,把 $string 内的 HTML 标签除去?
首先,PHP 有内建函式 strip_tags() 除去 HTML 标签,为何要自行编写正规表达式?好了,便当作是面试的一道考题吧,我会这样回答:

$stringOfText = "

This is a test

";$expression = "/<(.*?)>(.*?)<\/(.*?)>/";echo preg_replace($expression, " \\2 ", $stringOfText);// 有人说也可以使用 /(<[^>]*>)/ $expression = "/(<[^>]*>)/";echo preg_replace($expression, "", $stringOfText);

?

31.PHP 和 Perl 分辨阵列和散列表的方法有什么差异?
这正是为何我老是告诉别人选择适当的编程语言,若果你只用一种语言的话你怎么能回答这道问题?这道问题很简单,Perl 所有阵列变量都是以 @ 开头,例如 @myArray,PHP 则沿用 $ 作为所有变量的开头,例如 $myArray。
至于 Perl 表示散列表则用 %,例如 %myHash,PHP 则没有分别,仍是使用 $,例如 $myHash。

?

32.你如何利用 PHP 解决 HTTP 的无状态本质?
最 主要的俩各选择是 session 和 cookie。使用 session 的方法是在每一页的开始加上 session_start(),然后利用 $_SESSION 散列表来储存 session 变量。至于 cookie 你只需记着一个原则:在输出任何文字之前调用 set_cookie() 函式,此外只需使用 $_COOKIE 散列表便可以存取所有 cookie 变量。
还有一个不那么可靠的方法,就是利用访客的 IP 地址,这个方法有特定的危险性。

?

33.GD 函式库用来做什么?
这个可能是 我最喜欢的函式库,自从 PHP 4.3.0 版本后 GD 便内建在 PHP 系统中。这个函式库让你处理和显示各式格式的图档,它的另一个常见用途是制作所图档。GD 以外的另一个选择是 ImageMagick,但这个函式库并不内建于 PHP 之中,必须由系统管理员安装在伺服器上。

?

34.PHP 比 Perl 好吗?请讨论。
我 们不要为一个简单的问题引发一场舌战,正如我经常说的:“为工作选择适合的语言,不要把工作迁就语言。”我个人认为 Perl 十分适合用作命令行工具,虽然它在网页应用上也有不错的表现,但是它的真正实力在命令行上才能充分发挥。同样地,PHP 虽然可以在控制台的环境中使用,但是个人认为它在网页应用上有更好的表现,PHP 有大量专门为网页应用而设计的函式,Perl 则似乎以命令行为设计之本。
个人来说两种语言我都喜欢,在大学期间我经常使用 Perl、PHP 和 Java,可惜工作上我使用 C#,但在家里我花不少时间操练 PHP、Perl、Ruby(现正学习)和 Java,保持我的技能知识在最新状态。很多人问我 C 和 C++ 怎么样,它们是否仍有机会在我的应用中占一席位,我的答案基本上是“否”,我近来的工作主要集中在网页开发,虽然 C 和 C++ 也可以用来写网页,但它们到底不是为这种工作而设计的,“为工作选择适合的语言”,若果我需要编写一个控制台应用,用来展示 bubble sort、quick sort 和 merge sort 的效能比较,我一定会使用 C / C++。若果我需要编写一个相片簿系统,我会使用 PHP 或者 C#(我认为制作用户介面方面 .NET 语言比网页更加)。

?

35.请说明 PHP 中传值与传引用的区别。什么时候传值什么时候传引用?
?? 答: 传值只是把某一个变量的值传给了另一个变量,而引用则说明两者指向了同一个地方。

?

36.请用正则表达式(Regular Expression)写一个函数验证电子邮件的格式是否正确。

<?php
if(isset($_POST['action']) && $_POST['action']=='submitted')
{
    $email=$_POST['email'];
    if(!preg_match("/^(?:w+.?)*w+@(?:w+.?)*w+$/",$email))
     {
        echo "电子邮件检测失败";
     }
    else
     {
        echo "电子邮件检测成功";
     }
}
else
{
?>
<html>
<head><title>EMAIL检测</title>
<script type="text/javascript">
    function checkEmail(sText)
     {
        var reg=/^(?:w+.?)*w+@(?:w+.?)*w+$/;
        var email=document.getElementById(sText).value;
        if(!reg.test(email))
         {
             alert("电子邮件检测失败");
         }
        else
         {
             alert("电子邮件格式正确");
         }
     }
</script>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">
电子邮件:<input type="text" id="email" name="email" /><br />
<input type="hidden" name="action" value="submitted" />
<input type="button" name="button" value="客户端检测" onclick="checkEmail('email')" />
<input type="submit" name="submit" value="服务器端检测" />
</form>
</body>
</html>
<?php
}
?>
ログイン後にコピー

?

37.简述如何得到当前执行脚本路径,包括所得到参数。

echo "http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING'];
//echo "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
ログイン後にコピー

?

38.有一个一维数组,里面存储整形数据,请写一个函数,将他们按从大到小的顺序排列。要求执行效率高。并说明如何改善执行效率。(该函数必须自己实现,不能使用php函数)

<?php
function BubbleSort(&$arr)
{
    $cnt=count($arr);
    $flag=1;
    for($i=0;$i<$cnt;$i++)
     {
        if($flag==0)
         {
            return;
         }
        $flag=0;
        for($j=0;$j<$cnt-$i-1;$j++)
         {
            if($arr[$j]>$arr[$j+1])
             {
                $tmp=$arr[$j];
                $arr[$j]=$arr[$j+1];
                $arr[$j+1]=$tmp;
                $flag=1;
             }
         }
     }
}
$test=array(1,3,6,8,2,7);
BubbleSort($test);
var_dump($test);
?>
ログイン後にコピー

?

39.请举例说明在你的开发过程中用什么方法来加快页面的加载速度
?? 答:要用到服务器资源时才打开,及时关闭服务器资源,数据库添加索引,页面可生成静态,图片等大文件单独服务器。使用代码优化工具啦

?

40.创建poll表,用于记录单选投票用户的数据
字段包括 id[ Autoincreace ] , ip , time , iid(用户选则的选项,int型)
写出create上述table的完整sql语句

drop table if exists poll;

/*==============================================================*/
/* Table: poll                                                  */
/*==============================================================*/
create table poll
(
    id                             int unsigned                   not null auto_increment,
    ip                             varchar(15)                    not null,
    time                           datetime                       not null,
    iid                            int                            not null,
   primary key (id)
)
ログイン後にコピー

?

41.写出将一个选择2号选项的ip为127.0.0.1的用户在当前时间的投票记录到数据库的SQL

insert into poll (ip,time,iid) values('127.0.0.1',now(),2);
ログイン後にコピー

?

42.写出满足下边条件的SQL语句
  item表的结构为 id(就是poll表中的iid) , descp(用户选择的选项的文字)
  请查询并返回10条记录
, 包括ip和用户选择的选项的文字

?

43.现在因为投票人数太多,网站时常出现too many connection的错误,请提供解决方案
方法一:加大MySql的最大连接数
   mysql的最大连接数默认是100, 这个数值对于并发连接很多的数据库应用是远远不够的,当连接请求大于默认连接数后,就会出现无法连接数据库的错误,因此我们需要把它适当调大一些,编辑my.ini
?? 修改 max_connections=1000
方法二,不用mysql数据库,改为直接写文件,详细方法参照问题5
若非要用 mysql,还可
方法三:由于用mysql语句调用数据库时,在每次之执行语句前,会做一个临时的变量用来打开数据库,所以你在使用mysql语句的时候,记得在每次调用完mysql之后就关闭mysql临时变量

?

44.在成功解决连接数的问题后,发现程序运行缓慢,经查发现是mysql并发太多,表被锁定的现象严重,请提供解决方案
对 于访问量大的,本来就不推荐使用数据库,可以考虑直接写到文本中,根据预测的访问量,先定义假若是100个文件文件名依次为 1.txt,2.txt…100.txt,每有用户投票的时候,随机往其中的一个文件中写入投票信息。统计的时候,再对所有文本文件中的数据进行分析。必 要的时候,再导入数据库

drop table if exists item;

/**//*==============================================================*/
/**//* Table: item                                                  */
/**//*==============================================================*/
create table item
(
    id                             int                            not null,
    descp                          varchar(200)                   not null,
   primary key (id)
);
select A.ip,b.descp
from poll A,item B
where A.id=B.id
limit 10
ログイン後にコピー

?

45.现在开始要求同一ip不能重复投票 ,请指出如何对数据表进行相应的修改
ALTER TABLE `phpinterview`.`poll` ADD unique INDEX `IX_poll_ip`(`ip`);

?

46.原有数据已经有很多重复ip的数据了,所以我们把它导出为一个txt,格式和上边的poll一致,用TAB键间隔,请写一段程序,删除ip有重复的记录,并统计每个投票选项的投票数

<?php
//读取文本并放入数组
$apoll = file("c:\1.txt");
//对每一行数据进行分割,从而获取了一个二维数组
for ($i=0;$i<count($apoll);$i++)
{
    $poll[$i] = split("    ",$apoll[$i]);
}

//获取IP、出现的次数数据
$arrIP=array();
for($i=0;$i<count($poll);$i++)
{
    $arrIP[$poll[$i][1]]=isset($arrIP[$poll[$i][1]])?$arrIP[$poll[$i][1]]+1:1;
}

//获取选项、投票个数
$arrRes=array();
for($i=0;$i<count($poll);$i++)
{
    if($arrIP[$poll[$i][1]]==1)
     {
        $arrRes[$poll[$i][3]]=isset($arrRes[$poll[$i][3]])?$arrRes[$poll[$i][3]]+1:1;
     }
}
var_dump($arrRes);
?>
ログイン後にコピー

?

/*========================得到测试数据c: .txt=========*/
SELECT *
into outfile 'c: .txt'
FROM `testok`;
/**//*========================载入临时表=========*/
create TABLE phpinterview.testok(id int,ip varchar(15),time datetime,iid int);
LOAD DATA INFILE 'c: .txt'
into table testok;
/**//*=========================删除ip有重复的记录=========*/
delete A from testok A,(select ip from testok B group by ip having count(*) >1) B
where A.ip=B.ip
/**//*================统计每个投票选项的投票数==============================*/
select iid,count(*) from testok B group by B.iid
ログイン後にコピー
?

47.使用php写一段简单查询,查出所有姓名为“张三”的内容并打印出来
表名User
Name Tel Content Date
张三 13333663366 大专毕业 2006-10-11
张三 13612312331 本科毕业 2006-10-15
张四 021-55665566 中专毕业 2006-10-15
请根据上面的题目完成代码:

$mysql_db=mysql_connect("local","root","pass");
@mysql_select_db("DB",$mysql_db);
ログイン後にコピー
?
drop table if exists user;

/*==============================================================*/
/* Table: user                                                  */
/*==============================================================*/
create table user
(
    `Name`                           varchar(20),
    Tel                            varchar(16),
    Content                        varchar(255),
    `Date`                           date
)
insert into user(name,tel,content,`date`) values('张三','13333663366','大专毕业','2006-10-11');
insert into user(name,tel,content,`date`) values('张三','13612312331','本科毕业','2006-10-15');
insert into user(name,tel,content,`date`) values('张四','021-55665566','中专毕业','2006-10-1');

select * from user where name='张三';
ログイン後にコピー
?
<?php
header("content-type:text/html; charset=gbk"); 

$mysql_db=mysql_connect("localhost","root","");
@mysql_select_db("phpinterview",$mysql_db);
echo "<table>";
mysql_query("set names gbk");
$result=mysql_query("select Name,Tel,Content,Date from user where Name='张三'") or die("错误:".mysql_error());
while($row=mysql_fetch_array($result,MYSQL_BOTH))
{
     echo "<tr><td>".$row["Name"]."</td><td>".$row["Tel"]."</td><td>".
     $row["Content"]."</td><td>".$row["Date"]."</td></tr>";
}
mysql_free_result($result);
echo "</table>"
?>
ログイン後にコピー

?

48.如何使用下面的类,并解释下面什么意思?
class test{
??? function Get_test($num){
??? $num=md5(md5($num)."En");
??? return $num;
??? }
}

<?php
/**
* 使用md5加密数据...
*
*/
class test{
     function Get_test($num){
         $num=md5(md5($num)."En");
         return $num;
     }
}
$a=new test();
echo $a->Get_test("123");
?>
ログイン後にコピー

?

49.用javascipt打印 “上海爱吉”

<html>
<head><title>JS打印</title></head>
<body>
<script type="text/javascript">
     document.write("上海吉它");
</script>
</body>
</html>
ログイン後にコピー

?

50.写出 SQL语句的格式 : 插入 ,更新 ,删除

select expression
from tablename
where condition
group by columns asc 
with rollup
order by column asc
limit offset,rowcount;

insert into tablename(columname) values(exp);
update tablename set columnname=exp where condition order by column limit rowcount;
delete from tablename where condition order by column limit rowcount;
ログイン後にコピー

?

51.PHP/MySQL编程
1) 某内容管理系统中,表message有如下字段
id 文章id
title 文章标题
content 文章内容
category_id 文章分类id
hits 点击量
创建上表,写出MySQL语句

2)同样上述内容管理系统:表comment记录用户回复内容,字段如下
comment_id 回复id
id 文章id,关联message表中的id
comment_content 回复内容
现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面

文章id 文章标题 点击量 回复数量

?

用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为0

3) 上述内容管理系统,表category保存分类信息,字段如下
category_id int(4) not null auto_increment;
categroy_name varchar(40) not null;
用户输入文章时,通过选择下拉菜单选定文章分类
写出如何实现这个下拉菜单

drop table if exists Comment;

drop table if exists category;

drop table if exists message;

/**//*==============================================================*/
/**//* Table: Comment                                               */
/**//*==============================================================*/
create table Comment
(
    comment_id                     int unsigned                   not null,
    id                             int unsigned                   not null,
    comment_content                text,
   primary key (comment_id)
)
type = InnoDB;

/**//*==============================================================*/
/**//* Table: category                                              */
/**//*==============================================================*/
create table category
(
    category_id                    int                            not null AUTO_INCREMENT,
    category_name                  varchar(40)                    not null,
   primary key (category_id),
   key AK_pk_category_id (category_id)
)
type = InnoDB;

/**//*==============================================================*/
/**//* Table: message                                               */
/**//*==============================================================*/
create table message
(
    id                             int                            not null,
    title                          varchar(120)                   not null,
    content                        text                           not null,
    category_id                    int unsigned,
    hit                            int unsigned,
   primary key (id)
)
type = InnoDB;

select A.id,A.title,A.hits,IFNULL(B.num,0)
from message A left join (select id,count(*) as num from comment B group by id) B
on A.id=B.id
order by B.num desc;
ログイン後にコピー
?
<html>
<head><title>JS打印</title></head>
<body>
<form>
<select id="category" name="category">
<?php
mysql_connect("localhost","root","") or die("db conn error:".mysql_error());
mysql_select_db("phpinterview") or die("db error".mysql_error());
$result=mysql_query("select category_id,category_name from category");
while($row=mysql_fetch_array($result))
{
    echo "<option value='".$row["cateogry_id"]."'>".$row["category_name"]."</option>";
}
?>
</select>
</form>
</body>
ログイン後にコピー

?

52.容管理系统:用户提交内容后,系统生成静态HTML页面;写出实现的基本思路

直接通过php写入文件,或使用模板来替换标签

?

53.简单描述用户修改以发布内容的实现流程和基本思路
更新内容,替换静态文件

?

54.写出以下程序的输出结果
$b=201;
$c=40;
$a=$b>$c?4:5;
echo $a;
?>
answer:4

?

55.出以下程序的输出结果
$str="cd";
$$str="hotdog";
$$str.="ok";
echo $cd;
?>
answer:hotdogok

?

56.有一表 menu(mainmenu,submenu,url),请用递归法写出一树形菜单,将所有的menu列出来

JS打印


function GenerateMenu($id=0,$str="")
{
???? $result=mysql_query("select mainmenu,url,submenu from menu where mainmenu=$id");
???? while($row=mysql_fetch_array($result))
???? {
???????? echo $str.$row["url"]."
";
???????? GenerateMenu($row["submenu"],$str."--");
???? }
???? mysql_free_result($result);
}

$link=mysql_connect("localhost","root","");
mysql_select_db("phpinterview");
GenerateMenu();
mysql_close($link)
?>


?

57.给你三个数,写程序求出其最大值。
$var1=1;
$var2=7;
$var3=8;
$max=$var1>$var2?$var1:$var2;
$max=$max>$var3?$max:$var3;
echo $max;

?

58.写出发贴数最多的十个人名字的SQL,利用下表:
?? members(id,username,posts,pass,email)
SELECT username,count(*) as num FROM `members` group by username desc order by count(*) desc limit 10


59.如何通过javascript判断一个窗口是i已经被屏蔽。
<script>?? <br> var?? result?? =?? window.open("/somepage.php)</p> <p>if(result==null)?? <br> {?? <br> ??????? alert("浏览器不允许弹出窗口");?? <br> }?? </p> <p>?</p> <p>60.写出session的运行机制<br> 用户A访问站点Y,如果站点Y执行了session_start();(以下假定session_start()总 是存在)那么会产生一个 session_id,这个session id一般会以COOKIE的形式保存到用户A(我们可以通过在php.ini里设置session.use_only_cookies为1,强制 SESSION ID必须以COOKIE传递。)。这时候SESSION ID表现为$_COOKIE[’PHPSESSID’];(PHPSESSID可用session_name()函数来修改)<br> 用户A接着访问,这个session id($_COOKIE[’PHPSESSID’])就会在A每次访问Y的时候传送到站点Y。<br> 在站点Y上,会有这么一个目录,是用来保存SESSION的实际数据的。站点Y接收到session id,然后通过session id,来获得与SESSION数据的关联,并返回SESSION数据。");?? <br><br> </script>

?

60.防止SQL注射漏洞

一般用__addslashes___函数。

?

61.查询在线人数,并能处理异常掉线的SQL
参考:http://topic.csdn.net/t/20001216/09/49126.html

?

62通过HTTP协议一次上传多个文件的方法
有两个思路,是同一个方法的两种实现。具体程序还需自己去设计
1,在form中设置多个文件输入框,用数组命名他们的名字,如下:






这样,在服务器端做以下测试
echo "
";<br>
print_r($_FILES);<br>
echo "
";

1,在form中设置多个文件输入框,但名字不同,如下:






在服务器端做同样测试:
echo "
";<br>
print_r($_FILES);<br>
echo "
";

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Navicatプレミアムの作成方法 Navicatプレミアムの作成方法 Apr 09, 2025 am 07:09 AM

NAVICATプレミアムを使用してデータベースを作成します。データベースサーバーに接続し、接続パラメーターを入力します。サーバーを右クリックして、[データベースの作成]を選択します。新しいデータベースの名前と指定された文字セットと照合を入力します。新しいデータベースに接続し、オブジェクトブラウザにテーブルを作成します。テーブルを右クリックして、データを挿入してデータを挿入します。

MySQL:簡単な学習のためのシンプルな概念 MySQL:簡単な学習のためのシンプルな概念 Apr 10, 2025 am 09:29 AM

MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

PHPの未来:適応と革新 PHPの未来:適応と革新 Apr 11, 2025 am 12:01 AM

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。

PHP対Python:違いを理解します PHP対Python:違いを理解します Apr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

NavicatでMySQLへの新しい接続を作成する方法 NavicatでMySQLへの新しい接続を作成する方法 Apr 09, 2025 am 07:21 AM

手順に従って、NAVICATで新しいMySQL接続を作成できます。アプリケーションを開き、新しい接続(CTRL N)を選択します。接続タイプとして「mysql」を選択します。ホスト名/IPアドレス、ポート、ユーザー名、およびパスワードを入力します。 (オプション)Advanced Optionsを構成します。接続を保存して、接続名を入力します。

MySQLおよびSQL:開発者にとって不可欠なスキル MySQLおよびSQL:開発者にとって不可欠なスキル Apr 10, 2025 am 09:30 AM

MySQLとSQLは、開発者にとって不可欠なスキルです。 1.MYSQLはオープンソースのリレーショナルデータベース管理システムであり、SQLはデータベースの管理と操作に使用される標準言語です。 2.MYSQLは、効率的なデータストレージと検索機能を介して複数のストレージエンジンをサポートし、SQLは簡単なステートメントを通じて複雑なデータ操作を完了します。 3.使用の例には、条件によるフィルタリングやソートなどの基本的なクエリと高度なクエリが含まれます。 4.一般的なエラーには、SQLステートメントをチェックして説明コマンドを使用することで最適化できる構文エラーとパフォーマンスの問題が含まれます。 5.パフォーマンス最適化手法には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、コードの読み取り可能性の向上が含まれます。

PHP:それは死にかけていますか、それとも単に適応していますか? PHP:それは死にかけていますか、それとも単に適応していますか? Apr 11, 2025 am 12:13 AM

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

さまざまなデータベースシステムに列を追加するための構文の違いは何ですか さまざまなデータベースシステムに列を追加するための構文の違いは何ですか Apr 09, 2025 pm 02:15 PM

and:mysql:Alter table_name add column_name data_type; postgresql:column column_name data_typeを変更するcolumn column_name datape; oracle:alter table_name add(column_name data_type);

See all articles