Which of the following will NOT add john to the users array?
1. $users[] = 'john';
Successfully adds john to the array
2. array_add($users,’john’);
Fails stating Undefined Function array_add()
3. array_push($users,‘john’);
Successfully adds john to the array
4. $users ||= 'john';
Fails stating Syntax Error
What’s the difference between sort(), assort() and ksort? Under what circumstances would you use each of these?
1. sort()
Sorts an array in alphabetical order based on the value of each element. The index keys will also be renumbered 0 to length - 1. This is used primarily on arrays where the indexes/keys do not matter.
2. assort()
The assort function does not exist, so I am going to assume it should have been typed asort().

Like the sort() function, this sorts the array in alphabetical order based on the value of each element, however, unlike the sort() function, all indexes are maintained, thus it will not renumber them, but rather keep them. This is particularly useful with associate arrays.
3. ksort()
Sorts an array in alphabetical order by index/key. This is typically used for associate arrays where you want the keys/indexes to be in alphabetical order.
What would the following code print to the browser? Why?
$num = 10;
function multiply(){
$num = $num * 10;
echo $num; // prints 10 to the screen

Since the function does not specify to use $num globally either by using global $num; or by $_GLOBALS['num'] instead of $num, the value remains 10.
What is the difference between a reference and a regular variable? How do you pass by reference and why would you want to?

Reference variables pass the address location of the variable instead of the value. So when the variable is changed in the function, it is also changed in the whole application, as now the address points to the new value.

Now a regular variable passes by value, so when the value is changed in the function, it has no affect outside the function.
$myVariable = "its' value";
Myfunction(&$myVariable); // Pass by Reference Example

So why would you want to pass by reference? The simple reason, is you want the function to update the value of your variable so even after you are done with the function, the value has been updated accordingly.
What functions can you use to add library code to the currently running script?

This is another question where the interpretation could completely hit or miss the question. My first thought was class libraries written in PHP, so include(), include_once(), require(), and require_once() came to mind. However, you can also include COM objects and .NET libraries. By utilizing the com_load and the dotnet_load respectively you can incorporate COM objects and .NET libraries into your PHP code, thus anytime you see "library code" in a question, make sure you remember these two functions.
What is the difference between foo() & @foo()?

foo() executes the function and any parse/syntax/thrown errors will be displayed on the page.

@foo() will mask any parse/syntax/thrown errors as it executes.

You will commonly find most applications use @mysql_connect() to hide mysql errors or @mysql_query. However, I feel that approach is significantly flawed as you should never hide errors, rather you should manage them accordingly and if you can, fix them.


How do you debug a PHP application?

This isn't something I do often, as it is a pain in the butt to setup in Linux and I have tried numerous debuggers. However, I will point out one that has been getting quite a bit of attention lately.

PHP - Advanced PHP Debugger or PHP-APD. First you have to install it by running:
pear install apd

Once installed, start the trace by placing the following code at the beginning of your script:

Then once you have executed your script, look at the log in apd.dumpdir.
You can even use the pprofp command to format the data as in:
pprofp -R /tmp/pprof.22141.0

For more information see http://us.php.net/manual/en/ref.apd.php
What does === do? What’s an example of something that will give true for ‘==’, but not ‘===’?

The === operator is used for functions that can return a Boolean false and that may also return a non-Boolean value which evaluates to false. Such functions would be strpos and strrpos.

I am having a hard time with the second portion, as I am able to come up with scenarios where '==' will be false and '===' would come out true, but it's hard to think of the opposite. So here is the example I came up with:
if (strpos("abc", "a") == true)
// this does not get hit, since "a" is in the 0 index position, it returns false.
if (strpos("abc", "a") === true)
// this does get hit as the === ensures this is treated as non-boolean.

How would you declare a class named “myclass” with no methods or properties?
class myclass

How would you create an object, which is an instance of “myclass”?
$obj = new myclass();

It doesn't get any easier than this.
How do you access and set properties of a class from within the class?

You use the $this->PropertyName syntax.
class myclass
private $propertyName;
public function __construct()
$this->propertyName = "value";

What is the difference between include, include_once? and require?

All three allow the script to include another file, be it internal or external depending on if allow_url_fopen is enabled. However, they do have slight differences, which are denoted below.
1. include()
The include() function allows you to include a file multiple times within your application and if the file does not exist it will throw a Warning and continue on with your PHP script.
2. include_once()
include_once() is like include() except as the name suggests, it will only include the file once during the script execution.
3. require()
Like include(), you can request to require a file multiple times, however, if the file does not exist it will throw a Warning that will result in a Fatal Error stopping the PHP script execution.


What function would you use to redirect the browser to a new page?
1. redir()
This is not a function in PHP, so it will fail with an error.
2. header()
This is the correct function, it allows you to write header data to direct the page to a new location. For example:
header("Location: http://www.search-this.com/");

3. location()
This is not a function in PHP, so it will fail with an error.
4. redirect()
This is not a function in PHP, so it will fail with an error.
What function can you use to open a file for reading and writing?
1. fget()
This is not a function in PHP, so it will fail with an error.
2. file_open()
This is not a function in PHP, so it will fail with an error.
3. fopen()
This is the correct function, it allows you to open a file for reading and/or writing. In fact, you have a lot of options, check out php.net for more information.
4. open_file()
This is not a function in PHP, so it will fail with an error.
What's the difference between mysql_fetch_row() and mysql_fetch_array()?

mysql_fetch_row() returns all of the columns in an array using a 0 based index. The first row would have the index of 0, the second would be 1, and so on. Now another MySQL function in PHP is mysql_fetch_assoc(), which is an associative array. Its' indexes are the column names. For example, if my query was returning 'first_name', 'last_name', 'email', my indexes in the array would be 'first_name', 'last_name', and 'email'. mysql_fetch_array() provides the output of mysql_fetch_assoc and mysql_fetch_row().
What does the following code do? Explain what's going on there.
print ereg_replace("([0-9]+)/([0-9]+)/([0-9]+)","\\2/\\1/\\3",$date);

This code is reformatting the date from MM/DD/YYYY to DD/MM/YYYY. A good friend got me hooked on writing regular expressions like below, so it could be commented much better, granted this is a bit excessive for such a simple regular expression.
// Match 0-9 one or more times then a forward slash
$regExpression = "([0-9]+)/";
// Match 0-9 one or more times then another forward slash
$regExpression .= "([0-9]+)/";
// Match 0-9 one or more times yet again.
$regExpression .= "([0-9]+)";

Now the \\2/\\1/\\3 denotes the parentheses matches. The first parenthesis matches the month, the second the day, and the third the year.
Given a line of text $string, how would you write a regular expression to strip all the HTML tags from it?

First of all why would you write a regular expression when a PHP function already exists? See php.net's strip_tags function. However, considering this is an interview question, I would write it like so:
$stringOfText = "

This is a test
$expression = "/<(.*?)>(.*?)<\/(.*?)>/";
echo preg_replace($expression, "\\2", $stringOfText);
// It was suggested (by Fred) that /(<[^>]*>)/ would work too.
$expression = "/(<[^>]*>)/";
echo preg_replace($expression, "", $stringOfText);

What's the difference between the way PHP and Perl distinguish between arrays and hashes?

This is why I tell everyone to, "pick the language for the job!" If you only write code in a single language how will you ever answer this question? The question is quite simple. In Perl, you are required to use the @ sign to start all array variable names, for example, @myArray. In PHP, you just continue to use the $ (dollar sign), for example, $myArray.

Now for hashes in Perl you must start the variable name with the % (percent sign), as in, %myHash. Whereas, in PHP you still use the $ (dollar sign), as in, $myHash.
How can you get round the stateless nature of HTTP using PHP?

The top two options that are used are sessions and cookies. To access a session, you will need to have session_start() at the top of each page, and then you will use the $_SESSION hash to access and store your session variables. For cookies, you only have to remember one rule. You must use the set_cookie function before any output is started in your PHP script. From then on you can use the $_COOKIE has to access your cookie variables and values.

There are other methods, but they are not as fool proof and most often than not depend on the IP address of the visitor, which is a very dangerous thing to do.
What does the GD library do?

This is probably one of my favorite libraries, as it is built into PHP as of version 4.3.0 (I am very happy with myself, I didn't have to look up the version of PHP this was introduced on php.net). This library allows you to manipulate and display images of various extensions. More often than not, it is used to create thumbnail images. An alternative to GD is ImageMagick, however, unlike GD, this does not come built in to PHP and must be installed on the server by an Administrator.
Name a few ways to output (print) a block of HTML code in PHP?

Well you can use any of the output statments in PHP, such as, print, echo, and printf. Most individuals use the echo statement as in:
echo "My string $variable";

However, you can also use it like so:
This text is written to the screen as output and this $variable is parsed too. If you wanted you can have HTML tags in here as well. The END; remarks must be on a line of its own, and can't contain any extra white space.

Is PHP better than Perl? - Discuss.

Come on, let's not start a flame over such a trivial question. As I have stated many times before,

"Pick the language for the job, do not fit the job into a particular language."

Perl in my opinion is great for command line utilities, yes it can be used for the web as well, but its' real power can be really demonstrated through the command line. Likewise, PHP can be used on the command line too, but I personally feel it's more powerful on the web. It has a lot more functions built with the web in mind, whereas, Perl seems to have the console in mind.

Personally, I love both languages. I used Perl a lot in college and I used PHP and Java a lot in college. Unfortunately, my job requires me to use C#, but I spend countless hours at home working in PHP, Perl, Ruby (currently learning), and Java to keep my skills up to date. Many have asked me what happened to C and C++ and do they still fit into my applications from time to time. The answer is primarily 'No'. Lately all of my development work has been for the web and though C and C++ could be written for the web, they are hardly the language to use for such tasks. Pick the language for the job. If I needed a console application that was meant to show off the performance differences between a quick sort, bubble sort, and a merge sort, give me C/C++! If you want a Photo Gallery, give me PHP or C# (though I personally find .NET languages better for quick GUI applications than web).

I would like to take this time to challenge other companies to post their interview questions or feel free to email them to me at search-this [at] cpradio [dot] org. I will be glad to read through them, and write an article about them revealing their answers for everyone to learn.

Changed # to % for Perl Hashes - Thanks to MrSpooky for pointing that out, can't believe I forgot that!


Q1.Can we write windows like applications in PHP.
Ans : Yes using PHP-GTK on linux and WinBinder on windows.

Q2.What difference does it make when I declare variables with $ and $ in prefix.
Ans: $x = "Lion";
$$x = "Zebra";
echo $Lion;
would display "Zebra"
Use : creating runtime variables

Q3.What is the difference between strpos and stripos function
Ans: strpos is case sensitive search, and stripos is case insensitive search

Q4.What are the ways by which we can find out if a variable has been declared?
Ans: isset or empty language constructs

Q5.What is "global" and how to use it?
Ans: variables declared outside the functions can be used inside the function using global keyword

Q6.What is the difference between echo and print
Ans: echo can take more than one parameter for displaying.
print cannot take more than one
echo 'This', 'That' //is valid
print 'This', 'That' //is invalid
print returns 1 always.
echo cannot be used to return anything
$ret = print "Abcd" //valid
$ret = echo "Abcd" //invalid


Q14.What does function `eval` do?
Ans: Evaluate a string as PHP code;
Eg. eval('echo "This would be printed"');

Q15.What is the method by which PHP converts datatype of a given variable.
Ans: settype()
$a = "10"; // $a is string
settype($a,"integer"); // $a is integer

Q.Can we change php.ini settings at the runtime, and how?
Ans : Yes, using ini_set();

Q16.What is the difference between sort(), assort() and ksort? Under what circumstances would you use each of these?
Ans: Sorts an array, sorts an array and maintains index association, Sorts an array by key
Simple sort (sorts on values)
Simple sort after sorting the array (lets assume size of array is 10) rearranges the index, if we want to access element at index[5], using a simple sort an element value would have changed, but in assort the value is still held by index 5 though its position in the array may be 10th.
Ksort – sorts the array by key and maintains the key to data correlations

Q17.What is the difference between foo() & @foo()?
Ans: if an error occurs calling foo() would show up the error on the screen, whereas, @foo() would suppress the error because ‘@’ is a error control operator.

Q18.What is the difference between mysql_fetch_row() and mysql_fetch_array() and mysql_fetch_object?
Ans: mysql_fetch_row() – fetches a row as an enumerated array
mysql_fetch_array() - Fetch a result row as an associative array, a numeric array, or both
mysql_fetch_object - Fetch a result row as an object

Q19.What is the difference between include & include_once? include & require?
Ans: include_once includes the script only once if it is already included in the execution of the script
Include includes the script everytime the include is encountered in the code
Require is identical to include except that it results in fatal error when file is not present in the include_path.

Q20.What type of inheritance PHP supports?
Ans: An object can inherit only from one base class. Multiple inheritance is not supported in PHP.

Q21.How can we call an object's method by using the variable functions?
Ans: If MyClass contains function myFunction()

$foo = new MyClass();
$var = "myFunction";

[ Resource Link : http://in.php.net/manual/en/functions.variable-functions.php ]

Ajax, Cross site scripting (JavaScript).

Q22.What is the use of AJAX?
Ans: If a page contains form that needs to be updated constantly based on runtime values, a javascript code constantly sends user input to the system and displays the results from the server, without refreshing the whole page.

Q23.What is cross site scripting, and how to avoid it?
Ans: Injecting a javascript code in the response of a form that is capable of calling and executing scripts from other site.

Occurs when variables holding form values are not cleaned with html code escaping functions.

Clean the variables before storing or before display. Recommendation is to display the code clean and store the value as it is, unless its specified otherwise.


Q1.What is a join, what types of join are supported in MySQL.
Ans: A ‘join’ joins two table in such a way that all or partial records are selected from both the table based on join criteria.

Joins supported in mysql are :







Q2.In MySQL, what table type is required for foreign keys to work?
Ans: innoDB

Q3.How does full text search work.
Ans: A table must be a myISAM table
Table must have char varchar and text columns
FULLTEXT index must be created at the time of creation of table

Q4.What is the use of files .frm, .MYD, .MYI
Ans: frm files store the table definition
MYD files store the data
MYI files store the index

Q5.What is maximum size of a database in MySQL?
Ans: 65+GB / table / [ limited by the OS]

Q6.How many columns can exist in a mySql table?
Ans: 4096 colums

Q7.What is the maximum size of a row in a mysql table?
Ans: 65,535 not including blobs (as these are stored separately)

Q8. What would you use if you have a choice Natural [left] join or inner join or left join with using clause?
Ans: The NATURAL [LEFT] JOIN of two tables is defined to be semantically
equivalent to an INNER JOIN or a LEFT JOIN with a USING clause that names all columns that exist in both tables


1. What are the differences between Get and post methods in form submitting, give the case where we can use get and we can use post methods?
Ans :-
In the get method the data made available to the action page ( where data is received ) by the URL so data can be seen in the address bar. Not advisable if you are sending login info like password etc. In the post method the data will be available as data blocks and not as query string in case of get method.

2. Who is the father of php and explain the changes in php versions?
Ans :-
Rasmus Lerdorf for version changes goto http://php.net/

3. How can we submit from without a submit button?
Trigger the JavaScript code on any event ( like onselect of drop down list box, onfocus, etc ) document.myform.submit();This will submit the form.

4. How many ways we can retrieve the date in result set of mysql using php?
As individual objects so single record or as a set or arrays.

5. What is the difference between mysql_fetch_object and mysql_fetch_array?
MySQL fetch object will collect first single matching record where mysql_fetch_array will collect all matching records from the table in an array

6. What is the difference between $message and $$message?
Both are variables only
$message is a variable and if used with print statement, the content of the $message variable will be displayed. Where as with $$message variable, the content of the $message will also be treated as variable and the content of that variable will be displayed. For ex: If $message contains "var", then it displays the content of $var on the screen.


7. How can we extract string 'abc.com ' from a string 'http://info@abc.com' using regular _expression of php?
preg_match("/^(http:\/\/info@)?([^\/]+)/i","http://info@abc.com", $data);
echo $data[2];

Use the function split split(“@”,”http://info@abc.com”) which returns an array any second element of the returned array will hold the value as abc.com.

8. How can we create a database using php and mysql?

9. What are the differences between require and include, include_once?
File will not be included more than once.
If we want to include a file once only and further calling of the file will be ignored then we have to use the PHP function include_once(). This will prevent problems with function redefinitions, variable value reassignments, etc.

10. Can we use include ("abc.php") two times in a php page "makeit.php"?
Yes we can include..

11. What are the different tables present in mysql, which type of table is generated when we are creating a table in the following syntax: create table employee(eno int(2),ename varchar(10)) ?
Total 5 types of tables we can create
2. Heap
3. Merge
MyISAM is the default storage engine as of MySQL 3.23.

Table Types are
· ISAM(Index Sequential Access Method)
o Static
o Dynamic
o Compress
· Merge
· Heap (Fastest tables because it stores in to the RAM)
· InnoDB (Transaction safe table)

When you fire the above create query MySQL will create the Dynamic table.
MyISAM Table Type is created, if u not specified any table type then default will be applied and MyISAM is default

13. How can I execute a PHP script using command line?
Through php parse you can execute PHP script using command line. By default location of php parser is /var/www/html so set the path of this directory and just use as following
#php sample.php

16. What is meant by nl2br()?
nl2br() inserts html break in string
echo nl2br(”god bless \n you”);

god bless

Returns string with ‘’ inserted before all newlines


20. How can we encrypt and decrypt a data present in a mysql table using mysql?
AES_ENCRYPT() and AES_DECRYPT() ---to encrypt string

21. How can we encrypt the username and password using PHP?
You can encrypt a password with the following

26. What are the different types of errors in PHP?
Notices: These are trivial, non-critical errors that PHP encounters while executing a script - for example, accessing a variable that has not yet been defined. By default, such errors are not displayed to the user at all - although, as you will see, you can change this default behaviour.

Warnings: These are more serious errors - for example, attempting to include() a file which does not exist. By default, these errors are displayed to the user, but they do not result in script termination.

Fatal errors: These are critical errors - for example, instantiating an object of a non-existent class, or calling a non-existent function. These errors cause the immediate termination of the script, and PHP's default behaviour is to display them to the user when they take place.
27. What is the functionality of the function strstr and stristr?
string strstr ( string str1, string str2) this function search the string str1 for the first occurrence of the string str2 and returns the part of the string str1 from the first occurrence of the string str2. This function is case-sensitive and for case-insensitive search use stristr() function.

28. What are the differences between PHP 3 and PHP 4 and PHP 5?
for this ans goto http://php.net and check the version changes

29. How can we convert asp pages to PHP pages?
You can download asp2php front end application from the site http://asp2php.naken.cc.

30. What is meant by urlencode and urldecode?
string urlencode(str)
where str contains a string like this "hello world" and the return value will be URL encoded and can be use to append with URLs, normaly used to appned data for GET like someurl.com?var=hello%world
string urldocode(str)
this will simple decode the GET variable’s value
Like it echo (urldecode($_GET_VARS[var])) will output "Hello world"

34. What is the difference between the functions unlink and unset?
unlink is a function for file system handling. It will simply delete the file in context
unset will set UNSET the variable. e.g

35. How can we register the variables into a session?
Yes we can


42. How many ways can we get the value of current session id?
session_id() returns the session id for the current session.

43. How can we destroy the session, how can we unset the variable of a session?
session_unregister -- Unregister a global variable from the current session
session_unset -- Free all session variables

44. How can we destroy the cookie?
Set the cookie in past

45. How many ways we can pass the variable through the navigation between the pages?
GET or QueryString and POST

46. What is the difference between ereg_replace() and eregi_replace()?
eregi_replace() function is identical to ereg_replace() except that this ignores case distinction when matching alphabetic characters.eregi_replace() function is identical to ereg_replace() except that this ignores case distinction when matching alphabetic characters.

47. What are the different functions in sorting an array?
Sorting functions in PHP,

48. How can we know the count/number of elements of an array?
2 ways
a) sizeof($urarray) This function is an alias of count()
b) count($urarray)
interestingly if u just pass a simple var instead of a an array it will return 1.


53. List out the predefined classes in PHP?
1. Standard Defined Classes
These classes are defined in the standard set of functions included in the PHP build.

a. Directory
The class from which dir() is instantiated.


2.Ming Defined Classes
These classes are defined in the Ming extension, and will only be available when that
extension has either been compiled into PHP or dynamically loaded at runtime.


b. swffill

c. swfgradient

d. swfbitmap

e. swftext

f. swftextfield

g. swffont

h. swfdisplayitem

i. swfmovie

j. swfbutton

k. swfaction

l. swfmorph

m. swfsprite

3. Oracle 8 Defined Classes
These classes are defined in the Oracle 8 extension, and will only be available when
that extension has either been compiled into PHP or dynamically loaded at runtime.

a. OCI-Lob
b. OCI-Collection

4. qtdom Defined Classes
These classes are defined in the qtdom extension, and will only be available when that
extension has either been compiled into PHP or dynamically loaded at runtime.

a. QDomDocument

b. QDomNode

56. How can we send mail using JavaScript?
No You can't send mail using Javascript but u can execute a client side email client to send the email using mailto: code.

Using clientside email client
function myfunction(form)
return true;

This question is wrong. You aren’t really ’sending mail’ when doing a ‘mailto’ and so it’s a misleading question… A smart candidate would just say “It’s not possible” and you may write him off.

57. What is meant by PEAR in php?
PEAR is the next revolution in PHP. This repository is bringing higher level programming to PHP. PEAR is a framework and distribution system for reusable PHP components. It eases installation by bringing an automated wizard, and packing the strength and experience of PHP users into a nicely organised OOP library. PEAR also provides a command-line interface that can be used to automatically install "packages"

58. What is the purpose of the following files having extensions 1) frm 2) MYD 3) MYI. What these files contains?
In MySql, the default table type is MyISAM.
Each MyISAM table is stored on disk in three files. The files have names that begin with the table name and have an extension to indicate the file type.
The `.frm' file stores the table definition.
The data file has a `.MYD' (MYData) extension.
The index file has a `.MYI' (MYIndex) extension,


Session support in PHP consists of a way to preserve certain data across subsequent accesses. This enables you to build more customized applications and increase the appeal of your web site.

60. What is the difference between echo and print statement?

echo() can take multiple expressions,Print cannot take multiple expressions.

echo has the slight performance advantage because it doesn't have a return value.


1) Among the following which one returns the value of a field in a recordset?

a) mysql_field_table()
b) mysql_field_name()
*c) mysql_result()
d) mysql_list_fields()

2) Which function returns column information from a recordset as an object ?

a) mysql_fetch_object()
*b) mysql_fetch_field()
c) mysql_field_name()
d) mysql_fetch_row()

3) Which function returns MySQL host info ?

*a) mysql_get_host_info()
b) mysql_host()
c) mysql_host_info()
d) mysql_get_host()

4) What is the use of the function mysql_info() ?

a) Returns the information about mysql server
b) Returns the current status the of the mysql server
*c) Returns the information about the last query
d) None of the above

5) Which function returns the error number of the last MySQL operation ?

a) mysql_num_error()
b) mysql_error_num()
c) mysql_error()
*d) mysql_errno()

6) Which function returns length of each output in a result ?

a) mysql_field_len()
*b) mysql_fetch_lengths()
c) mysql_fetch_length()
d) mysql_field_length()

7) What is the second parameter does in the function mysql_field_table(param1,param2) ?

a) Database connection resource id
*b) The numerical field offset
c) Result set
d) Database name

8) Which function checks whether or not the connection to the server is working ?

a) mysql_ stat()
b) mysql_ get_ server_ info()
*c) mysql_ping()
d) mysql_ pconnect()

9) How to fetch a result row as an associative array ?

*a) mysql_fetch_assoc()
b) mysql_ fetch_ row()
c) mysql_ fetch_ field()
d) None of these

10) What is the return value of the function mysql_select_db() in case of success ?

a) Link Identifier
b) Resource
c) Array of strings
*d) True


function to get the extenstion of a file

function getFilenameExtension($fname){
$extension = explode('.', $fname);
//returning the extension of the files
return $extension[sizeof($extension)-1];


echo getFilenameExtension("filedbconection.inc.php");

Answer :php


//wrapping the text by 10 charecters
function displayWordWrap($text,$size=10){
$newtext = wordwrap($text, $size, " ", true);
return $newtext;


//function to check whether the url isvalid or not

function validUrl($url)
return 1;
return 0;


/* Displaying the tagclouds

function displayTagCloud($tags) {
// $tags is the array
//sorting the tags array

// looping through the tag array
foreach ($tags as $key => $value) {
echo "<a href="http://www.php.qa.blogspot.com%27" style="" title="'" >".$value."</a > ";


A function to ckeck the password length

function checkpassword_length($pass){
if($len>=6 && $len<16){
return false;
return true;


<head><TITLE>Test HTML DOM and JavaScript</TITLE>
<script language="javascript" type="text/javascript">
function addNewTexrFields() {
var ni = document.getElementById('testDiv');
var count = ni.childNodes.length;
var p = "addDiv"+i;

var testA = document.createElement('div');

var testTxt = document.createElement('input');

<td align="left" width="40%">
text fields
<td align="left" width="60%">
<input type="text" size="40" name="test[]"> <a href="javascript:addNewTexrFields()">Add More</a>
<div align="left" id="testDiv"></div>

just try it .........


//this page is called by variance_report.php.
//this is used for ajax based pagination
var xmlHttp
function showPage(starting)
if (xmlHttp==null)
alert ("Browser does not support HTTP Request")
var url="AjaxTest.php"


function stateChanged()
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")

function GetXmlHttpObject()
var xmlHttp=null;
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
catch (e)
//Internet Explorer
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
catch (e)
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
return xmlHttp;

the php page:

require_once "functions.php";

//error_reporting(E_ERROR ^ E_WARNING);
//for retreving suspended client records
$qry="SELECT * FROM personal1";
<table width="100%" border="0" cellpadding="7" cellspacing="0" bgcolor="#EFF8FF">
<td><table width="100%" border="0" cellpadding="4" cellspacing="0" bgcolor="#FFFFFF" class="border-blue">
<tr bgcolor="#46B0FF" class="border-blue-tr">
<td><div align="left"><STRONG>First Name</STRONG></div></td>
<td><DIV align=left><STRONG>Last Name </STRONG></DIV></td>
<? if(mysql_num_rows($rst)>0){
if($counter%2==0){ $color="#95D2FF"; } else { $color="#CAE8FF"; } ?>
<tr bgcolor="<? echo $color?>" class="border-blue-tr">
<td><div align="left"><? echo $data['first_name']; ?></div></td>
<td><? echo $data['last_name']; ?></td>
<? $counter++;
} } ?>
echo $page[1]."     ".$page[2];


the Main Page

<TITLE>Ajax Test</TITLE>
<script src="AjaxTest.js"></script>
<form name="form2" method="post" action="">
<div id="suspend">



fetching xml values from xml files using Simple XML
//fetching values from the xml files
$xml_content = simplexml_load_file('example.xml');

foreach ($xml_content as $fields){








Inserting nodes into xml files using XML DOM in PHP .

//creating the dom object
$dom = new DOMDocument();
$dom->formatOutput = true;

//loading the existing XML file

//writting new xml node

$rootnode = $dom->getElementsByTagName("details")->item(0);


$firstnameVal = $dom->createElement("firstname,$firstname);
$lastnameVal = $dom->createElement("lastname",$lastname);
$description = $dom->createElement("description", $description);




//saving the new node into the existing xml file

Output the XML FILE



to view an image on mouse over

<link type="text/css" href="new.css" rel="stylesheet" />
<script language="javascript" src="Mouseover.js" type="text/javascript"></script>
font-size: 0.75em;
position: absolute;
display: none;
left: 0px;
top: 0px;
width: 400px;
height: 0px;
z-index: 200;
<a href="" alt="" title="">
<img class="searchImg" alt="Asia and Australia on Planet earth" title="" src="background.jpg" onmouseover="showMouseOver('background.jpg','Asia and Australia on Planet earth','Asia and Australia on Planet earth',300,300);" hideMouseOver="hidetrail();" height="73" width="110">

the js file - Mouseover.js

var offsetfrommouse=[15,15]; //image x,y offsets from cursor position in pixels. Enter 0,0 for no offset
var displayduration=0; //duration in seconds image should remain visible. 0 for always.
var currentimageheight = 270; // maximum image size.

if (document.getElementById || document.all){
document.write('<div id="imageidSet">');

function gettrailobj(){
if (document.getElementById)
return document.getElementById("imageidSet").style
else if (document.all)
return document.all.trailimagid.style

function gettrailobjnostyle(){
if (document.getElementById)
return document.getElementById("imageidSet")
else if (document.all)
return document.all.trailimagid

function truebody(){
return (!window.opera && document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body

function showMouseOver(imagename,title,description,width,height){
if (height > 0){
currentimageheight = height;


newHTML = '<div style="padding: 5px; background-color: #FFF; border: 1px solid #888;">';
newHTML = newHTML + '<h2>' + title + '</h2>';
newHTML = newHTML + description + '<br/>';

newHTML = newHTML + '<div align="center" style="padding: 8px 2px 2px 2px;">';
newHTML = newHTML + '<img src="' + imagename + '" width="' + width + '" border="0"></div>';

newHTML = newHTML + '</div>';
gettrailobjnostyle().innerHTML = newHTML;

function hideMouseOver(){
gettrailobj().innerHTML = " ";


function followmouse(e){

var xcoord=offsetfrommouse[0]
var ycoord=offsetfrommouse[1]

var docwidth=document.all? truebody().scrollLeft+truebody().clientWidth : pageXOffset+window.innerWidth-15
var docheight=document.all? Math.min(truebody().scrollHeight, truebody().clientHeight) : Math.min(window.innerHeight)

if (typeof e != "undefined"){
if (docwidth - e.pageX < 380){
xcoord = e.pageX - xcoord - 400; // Move to the left side of the cursor
} else {
xcoord += e.pageX;
if (docheight - e.pageY < (currentimageheight + 110)){
ycoord += e.pageY - Math.max(0,(110 + currentimageheight + e.pageY - docheight - truebody().scrollTop));
} else {
ycoord += e.pageY;

} else if (typeof window.event != "undefined"){
if (docwidth - event.clientX < 380){
xcoord = event.clientX + truebody().scrollLeft - xcoord - 400; // Move to the left side of the cursor
} else {
xcoord += truebody().scrollLeft+event.clientX
if (docheight - event.clientY < (currentimageheight + 110)){
ycoord += event.clientY + truebody().scrollTop - Math.max(0,(110 + currentimageheight + event.clientY - docheight));
} else {
ycoord += truebody().scrollTop + event.clientY;

if(ycoord < 0) { ycoord = ycoord*-1; }



Here some useful file uploader progress bar with demo, Hope this will you














Dependant Selectboxes using Ajax

HTML code inside text area

first select box
<SELECT name="cmbLabel" id="selectOne" onchange="populateSecondSelect('selectOne','secondSelect');">
<option value="">Select</option>
second select box
<SELECT multiple="true" size="10" name="cmbGenre[]" id="secondSelect" style="width:160px">


var req;
var destid = '';
function loadXMLDoc(url)
// branch for native XMLHttpRequest object
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
if (req) {
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
// branch for IE/Windows ActiveX version
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
function processReqChange()
// only if req shows "complete"
if (req.readyState == 4)
// only if "OK"
if (req.status == 200)
// ...processing statements go here...
var response = req.responseText;
var strValue='';
var response = req.responseXML;
var output = document.getElementById(destid);
output.options.length = 0;
var optiontag = response.documentElement.getElementsByTagName('showoptions');
var count_options = optiontag.length;
for(var loopResult = 0; loopResult < count_options ;loopResult++){
var optionName = optiontag[loopResult].getAttribute("name");
var strReplaceAll = strValue;
var intIndexOfMatch = strReplaceAll.indexOf( "and" );

// Loop over the string value replacing out each matching
// substring.
while (intIndexOfMatch != -1){
// Relace out the current instance.
strReplaceAll = strReplaceAll.replace("and", "&" )

// Get the index of any next matching substring.
intIndexOfMatch = strReplaceAll.indexOf( "and" );

var optionValue = strReplaceAll;
//var optionValue = optiontag[loopResult].getAttribute("value").replace("(#)","&");
output.options[loopResult]= new Option(optionName,optionValue);

alert("There was a problem retrieving the XML data:\n" + req.statusText);

function populateSecondSelect(select_1,select_2)
var input = document.getElementById(select_1).value;
destid = select_2;
// Input mode
var url ='populateselect.php?q='+input;


if($q = $_GET['q']){
$query = "your query =".intval($q);
$result = mysql_query($query);
$numTotal = mysql_num_rows($result);
while($listShows = mysql_fetch_array($result)){
$options .= "";
$options = "";
// generating a virtual XML which is used to fill Combo
// The response XML is send to populateSelect.js file
header('Content-Type: text/xml');
$filedata ="
$filedata .= $options;
$filedata .="
print $filedata;


Comparing Dates Using JavaScript

The Date object is used to compare two dates.

function check_date(){
var dateval=document.addMusic.txtReleaseDate.value;

var stat=dateval.split('-');

var year=stat[2];
var month= stat[1];
var day=stat[0];

var dateToCheck = new Date();
var checkDate = dateToCheck.getTime();

var now = new Date();
now = now.getTime()
if( now > checkDate ){






    <meta name="GENERATOR" content="Quanta Plus">

    <meta http-equiv="Content-Type" content="text/html; charset=">

    <script language="JavaScript" type="text/javascript">

function show(id){

    var objArr=document.getElementsByTagName("div")












    <FORM method="POST" name="frm_select">





<SELECT name="cmb_elements"

              <option  selected="selected">


              </option><option value="1">


              </option><option value="2">

                 input box

              </option><option value="3">

                 select box

              </option><option value="4">

                 check box










            <div  id="1" style="display:none">



            <div id="2" style="display:none">



        <div id="3" style="display:none">

               select ADSFDSFDFDSFDSAFDASFdfa


        <div id="3" style="display:none">

               select ADSFDSFDFDSFDSAFDASFdfa









1. Explain MySQL architecture. - The front layer takes care of network connections and security authentications, the middle layer does the SQL query parsing, and then the query is handled off to the storage engine. A storage engine could be either a default one supplied with MySQL (MyISAM) or a commercial one supplied by a third-party vendor (ScaleDB, InnoDB, etc.)
2. Explain MySQL locks. - Table-level locks allow the user to lock the entire table, page-level locks allow locking of certain portions of the tables (those portions are referred to as tables), row-level locks are the most granular and allow locking of specific rows.
3. Explain multi-version concurrency control in MySQL. - Each row has two additional columns associated with it - creation time and deletion time, but instead of storing timestamps, MySQL stores version numbers.

4. What are MySQL transactions? - A set of instructions/queries that should be executed or rolled back as a single atomic unit.
5. What’s ACID? - Automicity - transactions are atomic and should be treated as one in case of rollback. Consistency - the database should be in consistent state between multiple states in transaction. Isolation - no other queries can access the data modified by a running transaction. Durability - system crashes should not lose the data.
6. Which storage engines support transactions in MySQL? - Berkeley DB and InnoDB.
7. How do you convert to a different table type? - ALTER TABLE customers TYPE = InnoDB
8. How do you index just the first four bytes of the column? - ALTER TABLE customers ADD INDEX (business_name(4))
9. What’s the difference between PRIMARY KEY and UNIQUE in MyISAM? - PRIMARY KEY cannot be null, so essentially PRIMARY KEY is equivalent to UNIQUE NOT NULL.
10. How do you prevent MySQL from caching a query? - SELECT SQL_NO_CACHE …
11. What’s the difference between query_cache_type 1 and 2? - The second one is on-demand and can be retrieved via SELECT SQL_CACHE … If you’re worried about the SQL portability to other servers, you can use SELECT /* SQL_CACHE */ id FROM … - MySQL will interpret the code inside comments, while other servers will ignore it.


1. What is DDL, DML and DCL? - If you look at the large variety of SQL commands, they can be divided into three large subgroups. Data Definition Language deals with database schemas and descriptions of how the data should reside in the database, therefore language statements like CREATE TABLE or ALTER TABLE belong to DDL. DML deals with data manipulation, and therefore includes most common SQL statements such SELECT, INSERT, etc. Data Control Language includes commands such as GRANT, and mostly concerns with rights, permissions and other controls of the database system.
2. How do you get the number of rows affected by query? - SELECT COUNT (user_id) FROM users would only return the number of user_id’s.

3. If the value in the column is repeatable, how do you find out the unique values? - Use DISTINCT in the query, such as SELECT DISTINCT user_firstname FROM users; You can also ask for a number of distinct values by saying SELECT COUNT (DISTINCT user_firstname) FROM users;
4. How do you return the a hundred books starting from 25th? - SELECT book_title FROM books LIMIT 25, 100. The first number in LIMIT is the offset, the second is the number.
5. You wrote a search engine that should retrieve 10 results at a time, but at the same time you’d like to know how many rows there’re total. How do you display that to the user? - SELECT SQL_CALC_FOUND_ROWS page_title FROM web_pages LIMIT 1,10; SELECT FOUND_ROWS(); The second query (not that COUNT() is never used) will tell you how many results there’re total, so you can display a phrase "Found 13,450,600 results, displaying 1-10". Note that FOUND_ROWS does not pay attention to the LIMITs you specified and always returns the total number of rows affected by query.
6. How would you write a query to select all teams that won either 2, 4, 6 or 8 games? - SELECT team_name FROM teams WHERE team_won IN (2, 4, 6, 8)
7. How would you select all the users, whose phone number is null? - SELECT user_name FROM users WHERE ISNULL(user_phonenumber);
8. What does this query mean: SELECT user_name, user_isp FROM users LEFT JOIN isps USING (user_id) - It’s equivalent to saying SELECT user_name, user_isp FROM users LEFT JOIN isps WHERE users.user_id=isps.user_id
9. How do you find out which auto increment was assigned on the last insert? - SELECT LAST_INSERT_ID() will return the last value assigned by the auto_increment function. Note that you don’t have to specify the table name.
10. What does –i-am-a-dummy flag to do when starting MySQL? - Makes the MySQL engine refuse UPDATE and DELETE commands where the WHERE clause is not present.
11. On executing the DELETE statement I keep getting the error about foreign key constraint failing. What do I do? - What it means is that so of the data that you’re trying to delete is still alive in another table. Like if you have a table for universities and a table for students, which contains the ID of the university they go to, running a delete on a university table will fail if the students table still contains people enrolled at that university. Proper way to do it would be to delete the offending data first, and then delete the university in question. Quick way would involve running SET foreign_key_checks=0 before the DELETE command, and setting the parameter back to 1 after the DELETE is done. If your foreign key was formulated with ON DELETE CASCADE, the data in dependent tables will be removed automatically.
12. When would you use ORDER BY in DELETE statement? - When you’re not deleting by row ID. Such as in DELETE FROM techinterviews_com_questions ORDER BY timestamp LIMIT 1. This will delete the most recently posted question in the table techinterviews_com_questions.
13. How can you see all indexes defined for a table? - SHOW INDEX FROM techinterviews_questions;
14. How would you change a column from VARCHAR(10) to VARCHAR(50)? - ALTER TABLE techinterviews_questions CHANGE techinterviews_content techinterviews_CONTENT VARCHAR(50).
15. How would you delete a column? - ALTER TABLE techinterviews_answers DROP answer_user_id.
16. How would you change a table to InnoDB? - ALTER TABLE techinterviews_questions ENGINE innodb;
17. When you create a table, and then run SHOW CREATE TABLE on it, you occasionally get different results than what you typed in. What does MySQL modify in your newly created tables? -
1. VARCHARs with length less than 4 become CHARs
2. CHARs with length more than 3 become VARCHARs.
3. NOT NULL gets added to the columns declared as PRIMARY KEYs
4. Default values such as NULL are specified for each column
18. How do I find out all databases starting with ‘tech’ to which I have access to? - SHOW DATABASES LIKE ‘tech%’;
19. How do you concatenate strings in MySQL? - CONCAT (string1, string2, string3)
20. How do you get a portion of a string? - SELECT SUBSTR(title, 1, 10) from techinterviews_questions;
21. What’s the difference between CHAR_LENGTH and LENGTH? - The first is, naturally, the character count. The second is byte count. For the Latin characters the numbers are the same, but they’re not the same for Unicode and other encodings.
22. How do you convert a string to UTF-8? - SELECT (techinterviews_question USING utf8);
23. What do % and _ mean inside LIKE statement? - % corresponds to 0 or more characters, _ is exactly one character.
24. What does + mean in REGEXP? - At least one character. Appendix G. Regular Expressions from MySQL manual is worth perusing before the interview.
25. How do you get the month from a timestamp? - SELECT MONTH(techinterviews_timestamp) from techinterviews_questions;
26. How do you offload the time/date handling to MySQL? - SELECT DATE_FORMAT(techinterviews_timestamp, ‘%Y-%m-%d’) from techinterviews_questions; A similar TIME_FORMAT function deals with time.
27. How do you add three minutes to a date? - ADDDATE(techinterviews_publication_date, INTERVAL 3 MINUTE)
28. What’s the difference between Unix timestamps and MySQL timestamps? - Internally Unix timestamps are stored as 32-bit integers, while MySQL timestamps are stored in a similar manner, but represented in readable YYYY-MM-DD HH:MM:SS format.
29. How do you convert between Unix timestamps and MySQL timestamps? - UNIX_TIMESTAMP converts from MySQL timestamp to Unix timestamp, FROM_UNIXTIME converts from Unix timestamp to MySQL timestamp.
30. What are ENUMs used for in MySQL? - You can limit the possible values that go into the table. CREATE TABLE months (month ENUM ‘January’, ‘February’, ‘March’,…); INSERT months VALUES (’April’);
31. How are ENUMs and SETs represented internally? - As unique integers representing the powers of two, due to storage optimizations.


1. How do you start and stop MySQL on Windows? - net start MySQL, net stop MySQL
2. How do you start MySQL on Linux? - /etc/init.d/mysql start
3. Explain the difference between mysql and mysqli interfaces in PHP? - mysqli is the object-oriented version of mysql library functions.
4. What’s the default port for MySQL Server? - 3306
5. What does tee command do in MySQL? - tee followed by a filename turns on MySQL logging to a specified file. It can be stopped by command notee.
6. Can you save your connection settings to a conf file? - Yes, and name it ~/.my.conf. You might want to change the permissions on the file to 600, so that it’s not readable by others.
7. How do you change a password for an existing user via mysqladmin? - mysqladmin -u root -p password "newpassword"
8. Use mysqldump to create a copy of the database? - mysqldump -h mysqlhost -u username -p mydatabasename > dbdump.sql
9. Have you ever used MySQL Administrator and MySQL Query Browser? Describe the tasks you accomplished with these tools.
10. What are some good ideas regarding user security in MySQL? - There is no user without a password. There is no user without a user name. There is no user whose Host column contains % (which here indicates that the user can log in from anywhere in the network or the Internet). There are as few users as possible (in the ideal case only root) who have unrestricted access.
11. Explain the difference between MyISAM Static and MyISAM Dynamic. - In MyISAM static all the fields have fixed width. The Dynamic MyISAM table would include fields such as TEXT, BLOB, etc. to accommodate the data types with various lengths. MyISAM Static would be easier to restore in case of corruption, since even though you might lose some data, you know exactly where to look for the beginning of the next record.
12. What does myisamchk do? - It compressed the MyISAM tables, which reduces their disk usage.
13. Explain advantages of InnoDB over MyISAM? - Row-level locking, transactions, foreign key constraints and crash recovery.
14. Explain advantages of MyISAM over InnoDB? - Much more conservative approach to disk space management - each MyISAM table is stored in a separate file, which could be compressed then with myisamchk if needed. With InnoDB the tables are stored in tablespace, and not much further optimization is possible. All data except for TEXT and BLOB can occupy 8,000 bytes at most. No full text indexing is available for InnoDB. TRhe COUNT(*)s execute slower than in MyISAM due to tablespace complexity.
15. What are HEAP tables in MySQL? - HEAP tables are in-memory. They are usually used for high-speed temporary storage. No TEXT or BLOB fields are allowed within HEAP tables. You can only use the comparison operators = and <=>. HEAP tables do not support AUTO_INCREMENT. Indexes must be NOT NULL.
16. How do you control the max size of a HEAP table? - MySQL config variable max_heap_table_size.
17. What are CSV tables? - Those are the special tables, data for which is saved into comma-separated values files. They cannot be indexed.
18. Explain federated tables. - Introduced in MySQL 5.0, federated tables allow access to the tables located on other databases on other servers.
20. What happens when the column is set to AUTO INCREMENT and you reach the maximum value for that table? - It stops incrementing. It does not overflow to 0 to prevent data losses, but further inserts are going to produce an error, since the key has been used already.
21. Explain the difference between BOOL, TINYINT and BIT. - Prior to MySQL 5.0.3: those are all synonyms. After MySQL 5.0.3: BIT data type can store 8 bytes of data and should be used for binary data.
22. Explain the difference between FLOAT, DOUBLE and REAL. - FLOATs store floating point numbers with 8 place accuracy and take up 4 bytes. DOUBLEs store floating point numbers with 16 place accuracy and take up 8 bytes. REAL is a synonym of FLOAT for now.
23. If you specify the data type as DECIMAL (5,2), what’s the range of values that can go in this table? - 999.99 to -99.99. Note that with the negative number the minus sign is considered one of the digits.
24. What happens if a table has one column defined as TIMESTAMP? - That field gets the current timestamp whenever the row gets altered.
25. But what if you really want to store the timestamp data, such as the publication date of the article? - Create two columns of type TIMESTAMP and use the second one for your real data.
26. Explain data type TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP - The column exhibits the same behavior as a single timestamp column in a table with no other timestamp columns.
27. What does TIMESTAMP ON UPDATE CURRENT_TIMESTAMP data type do? - On initialization places a zero in that column, on future updates puts the current value of the timestamp in.
28. Explain TIMESTAMP DEFAULT ‘2006:09:02 17:38:44′ ON UPDATE CURRENT_TIMESTAMP. - A default value is used on initialization, a current timestamp is inserted on update of the row.
29. If I created a column with data type VARCHAR(3), what would I expect to see in MySQL table? - CHAR(3), since MySQL automatically adjusted the data type.