At the moment I'm using;
<html>
<head>
</head>
<body>
<form name="frmSearch" method="get" action="<?=$_SERVER['SCRIPT_NAME'];?>">
  <table width="599" border="1">
    <tr>
      <th>Keyword
        <input name="txtKeyword" type="text" id="txtKeyword" value="<?=$_GET["txtKeyword"];?>">
        <input type="submit" value="Search"></th>
    </tr>
  </table>
</form>
<?
if($_GET["txtKeyword"] != "")
    {
    $objConnect = mysql_connect("XXXXX","XXXX","XXXX") or die(mysql_error());
    $objDB = mysql_select_db("XXXX");
    // Search By Name or Email
    $strSQL = "SELECT * FROM blogs WHERE (title LIKE '%".$_GET["txtKeyword"]."%' or metadescription LIKE '%".$_GET["txtKeyword"]."%')";
    $objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
    $Num_Rows = mysql_num_rows($objQuery);
    $Per_Page = 2;   // Per Page
    $Page = $_GET["Page"];
    if(!$_GET["Page"])
    {
        $Page=1;
    }
    $Prev_Page = $Page-1;
    $Next_Page = $Page+1;
    $Page_Start = (($Per_Page*$Page)-$Per_Page);
    if($Num_Rows<=$Per_Page)
    {
        $Num_Pages =1;
    }
    else if(($Num_Rows % $Per_Page)==0)
    {
        $Num_Pages =($Num_Rows/$Per_Page) ;
    }
    else
    {
        $Num_Pages =($Num_Rows/$Per_Page)+1;
        $Num_Pages = (int)$Num_Pages;
    }
    $strSQL .=" order  by id ASC LIMIT $Page_Start , $Per_Page";
    $objQuery  = mysql_query($strSQL);
    ?>
<table width="600" border="1">
  <tr>
    <th width="91"> <div align="center">CustomerID </div></th>
    <th width="98"> <div align="center">Name </div></th>
    <th width="198"> <div align="center">Email </div></th>
  </tr>
  <?
    while($objResult = mysql_fetch_array($objQuery))
    {
    ?>
  <tr>
    <td><div align="center">
        <?=$objResult["id"];?>
      </div></td>
    <td><?=$objResult["title"];?></td>
    <td><?=$objResult["metadescription"];?></td>
  </tr>
  <?
    }
    ?>
</table>
<br>
Total
<?= $Num_Rows;?>
Record :
<?=$Num_Pages;?>
Page :
<?
    if($Prev_Page)
    {
        echo " <a href='$_SERVER[SCRIPT_NAME]?Page=$Prev_Page&txtKeyword=$_GET[txtKeyword]'><< Back</a> ";
    }
    for($i=1; $i<=$Num_Pages; $i++){
        if($i != $Page)
        {
            echo "[ <a href='$_SERVER[SCRIPT_NAME]?Page=$i&txtKeyword=$_GET[txtKeyword]'>$i</a> ]";
        }
        else
        {
            echo "<b> $i </b>";
        }
    }
    if($Page!=$Num_Pages)
    {
        echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$Next_Page&txtKeyword=$_GET[txtKeyword]'>Next>></a> ";
    }
    mysql_close($objConnect);
    }   
?>
</body>
</html>
This works fine but I'd like to make it more secure so it can withstand injection and xss attacks etc. Basically I need to make it 100% secure.
I'm trying to change it to PDO and I have got the following so far;
$stmt = $pdo->prepare('SELECT * FROM blogs WHERE title LIKE = ?');
$stmt->execute($_POST['txtKeyword']);
Which I think is correct and as its two separate interactions with the DB it should be secure from injections (i think?)
problem is; 1) I'm not sure how to implement this and 2) what else is needed to make sure the search is secure
I'd really appreciate any help
