How to make a object move? and why does it fall under terrain?

I’m using unity 5 and I watch tutorials on youtube on how to do that but whenever I try that my object doesn’t move and it just starts to sink into the ground/terrain. Here is the script.

using UnityEngine;
using System.Collections;

public class PlayerController : MonoBehaviour {

public float speed;

void FixedUpdate()
{
	float moveHorizontal = Input.GetAxis ("Horizontal");
	float moveVertical = Input.GetAxis ("Vertical");
	
	Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
	
	if( movement != Vector3.zero) {
		GetComponent<Rigidbody>().AddForce(movement * speed * Time.deltaTime);
	}
}

}}

for movement I suggest you to create a coroutine , in this coroutine that updates each seconds for instance , you increment a float like float ForceMagnitude , then in the update method , enter this value in the AddForce method , then reset to 0 this variable .

To avoid error you can explicitly add this before your class :

[RequireComponent (typeof (Rigidbody))]