Folks,
This is starting to get on my nerves now.
What on earth do you think is wrong with my code that when I click the SEARCH button I get error number:
**Error: . Error: 0.
I added 2 buttons coding it differently. To test both buttons which works at all times and which doesn’t and so bear this in mind and don’t ask why I got 2 buttons.
I searched for the keyword “heman”. The ‘links’ tbl has a column “keywords” and it has the first entry in that column “heman”. The 2nd entry is “she-ra”.
Typing “heman” in the form shows no result. Nor “she-ra” shows any result.
Notice in the comments, i got my QUESTIONS in CAPITALS. I’d appreciate their answers.
Thanks!
[code]
<?php
require ‘error_reporting.php’;
require ‘conn.php’;
if($_SERVER[‘REQUEST_METHOD’] === ‘GET’)
{
if(ISSET($_GET[‘search’]))//THERE WILL BE MORE THAN ONE BUTTON ON THIS PAGE. HENCE THIS LINE.
{
if(ISSET($_GET[‘keywords’]))
{
$keywords = $_GET[‘keywords’];
}
$query = “SELECT page_url,link_anchor_text,page_description,keyphrases,keywords FROM links WHERE keywords = ?”;
$stmt = mysqli_stmt_init($conn);
if(mysqli_stmt_prepare($stmt,$query))
{
mysqli_stmt_bind_param($stmt,’s’,$keywords);
//1ST SET OUT OF 2 SETS REGARDING mysqli_stmt_execute. QA. WHICH SET TO KEEP ?
if(mysqli_stmt_execute($stmt) === FALSE)
{
printf(“Error: %s.n”, mysqli_stmt_error($stmt));
printf(“Error: %d.n”, mysqli_stmt_errno($stmt));
die;
}
//2ND SET OUT OF 2 SETS REGARDING mysqli_stmt_execute. QA. WHICH SET TO KEEP ?
$stmt_execute = mysqli_stmt_execute($stmt);
if($stmt_execute === FALSE)
{
printf(“Error: %s.n”, mysqli_stmt_error($stmt));
printf(“Error: %d.n”, mysqli_stmt_errno($stmt));
die;
}
//1ST SET OUT OF 2 SETS REGARDING mysqli_stmt_bind_result. QB. WHICH SET TO KEEP ?
if($bind_result = mysqli_stmt_bind_result($stmt,$page_url,$link_anchor_text,$page_description,$keyphrase,$keywords)); //SHOULD I KEEP THIS IF OR THE IF BEFORE THIS ONE ?
{
printf(“Error: %s.n”, mysqli_stmt_error($stmt));
printf(“Error: %d.n”, mysqli_stmt_errno($stmt));
die;
}
//2ND SET OUT OF 2 SETS REGARDING mysqli_stmt_bind_result. QB. WHICH SET TO KEEP ?
$bind_result = mysqli_stmt_bind_result($stmt,$page_url,$link_anchor_text,$page_description,$keyphrase,$keywords);
if($bind_result === FALSE) //Q7. SHOULD I KEEP THIS IF OR THE NEXT IF AFTER THIS ONE ?
{
printf(“Error: %s.n”, mysqli_stmt_error($stmt));
printf(“Error: %d.n”, mysqli_stmt_errno($stmt));
die;
}
//1ST SET OUT OF 2 SETS REGARDING mysqli_stmt_fetch. QC. WHICH SET TO KEEP ?
if($stmt_fetch = mysqli_stmt_fetch($stmt)) //Q11. SHOULD I KEEP THIS IF OR THE IF THAT COMES BEFORE THIS IF ?
{
printf(“Error: %s.n”, mysqli_stmt_error($stmt));
printf(“Error: %d.n”, mysqli_stmt_errno($stmt));
die;
}
//2ND SET OUT OF 2 SETS REGARDING mysqli_stmt_fetch. QC. WHICH SET TO KEEP ?
$stmt_fetch = mysqli_stmt_fetch($stmt);
if($stmt_fetch === FALSE) //Q11. SHOULD I KEEP THIS IF OR THE IF THAT COMES AFTER THIS IF ?
{
printf(“Error: %s.n”, mysqli_stmt_error($stmt));
printf(“Error: %d.n”, mysqli_stmt_errno($stmt));
die;
}
while(mysqli_stmt_fetch($stmt))
{
//QD. IS IT OK TO ECHO OR SHOULD I PRINTF INSIDE THE WHILE LOOP HERE ? I SEE NO DIFFERENCE.
echo “$page_url”; echo “<br>”;
echo “$link_anchor_text”; echo “<br>”;
echo “$page_description”; echo “<br>”;
echo “$keyphrase”; echo “<br>”;
echo “$keywords”; echo “<br>”;
echo “|”;
echo “<br>”;
}
mysqli_stmt_close($stmt); //QE. 2 EXPERTS TELL ME NOT TO KEEP THIS LINE BUT TUTORIAL SITES SHOW ME TO KEEP IT. WHY TUTORIALS SHOW ME TO KEEP IT ? MANUAL ALSO SHOWS TO KEEP IT: https://www.php.net/manual/en/mysqli-stmt.bind-result.php
mysqli_close($conn); //QE. 2 EXPERTS TELL ME NOT TO KEEP THIS LINE BUT TUTORIAL SITES SHOW ME TO KEEP IT. WHY TUTORIALS SHOW ME TO KEEP IT ? MANUAL ALSO SHOWS TO KEEP IT: https://www.php.net/manual/en/mysqli-stmt.bind-result.php
}
else
{
die(“QUERY failed in Line 96!”);
}
$query = “SELECT page_url,link_anchor_text,page_description,keyphrases,keywords FROM links WHERE keywords = ?”;
$stmt = mysqli_stmt_init($conn);
if(mysqli_stmt_prepare($stmt,$query))
{
mysqli_stmt_bind_param($stmt,’s’,$keywords);
$stmt_execution = mysqli_stmt_execute($stmt);
if($stmt_execution === FALSE)
{
printf(“Error: %s.n”, mysqli_stmt_error($stmt));
printf(“Error: %d.n”, mysqli_stmt_errno($stmt));
die;
}
$get_result = mysqli_stmt_get_result($stmt);
if($get_result === FALSE)
{
printf(“Error: %s.n”, mysqli_stmt_error($stmt));
printf(“Error: %d.n”, mysqli_stmt_errno($stmt));
die;
}
while($row = mysqli_fetch_array($get_result,MYSQLI_ASSOC))
{
$page_url = $row[‘page_url’]; echo $page_url; echo “<br>”;
$link_anchor_text = $row[‘link_anchor_text’]; echo $link_anchor_text; echo “<br>”;
$page_description = $row[‘page_description’]; echo $page_description; echo “<br>”;
$keyphrases = $row[‘keyphrases’]; echo $keyphrases; echo “<br>”;
$keywords = $row[‘keywords’]; echo $keywords; echo “<br>”;
echo “|”;
echo “<br>”;
}
mysqli_stmt_close($stmt);
mysqli_close($conn);
}
else
{
die(“QUERY failed in line 139!”);
}
}
}
?>
<form name = “search” method = “GET”>
<label for=”keywords”>Keywords:*</label>
<input type=”text” name=”keywords” id=”keywords” placeholder=”Input Keywords” required>
<br>
<button name=search value=” “>Search</button><br>
<button type=”submit” name=”search” value=”search”>Search</button>
<br>
<input type=”reset”>
<br>
</form>
What is wrong ? Beats me! Beats you too ?