0

I'm a bit stuck with one of my task which is to require a user input for an 'ID no' and it shall go through a table in my WP and display the result on the same page (after hitting Submit).

I'm currently using the Code Snippets plugin to insert this PHP code into one of my WP page. However, as of now, when I input a valid IC/ID no. into the input field, it doesn't seem to return anything.

Am I doing something wrong on the form part? Please enlighten. Thanks!

<?php

$name=$_POST["ICNo"];

global $wpdb;
$resultsap = $wpdb->get_results('SELECT * FROM `wp_apelc_users` WHERE `icno` = .$name.');
foreach($resultsap as $row) {
    echo 'Name: '.$row->name.', Status: '.$row->status.'<br/>';
}

?>

<form method="post">
  <div>
    Your IC No: <input type="text" name="ICNo">
    <input type="submit" name="submit" value="Submit" >
  </div>
</form>
4
  • FYI, the table and columns are valid. If I omit the form part and only display the query, it works.
    – Vicky
    Aug 1, 2019 at 10:31
  • 1
    That .$name. is invalid, and you're not using double quotes ("), and you should use $wpdb->prepare().
    – Sally CJ
    Aug 1, 2019 at 10:39
  • Thanks Sally, do you know what I should use in the query that defines 'an input from the user'? So meaning to say, I should write something like ".$name." ?
    – Vicky
    Aug 1, 2019 at 10:44
  • 1
    Yes, that would work. But once again, I highly suggest you to use $wpdb->prepare() to avoid SQL injections (and other security issues) - $wpdb->get_results( $wpdb->prepare( "SELECT * FROM wp_apelc_users WHERE icno = %s", $name ) ).
    – Sally CJ
    Aug 1, 2019 at 12:12

1 Answer 1

0

use this snippet it works

<?php if(isset($_POST["ICNo"])) {
global $wpdb;
$name = $_POST["ICNo"];
 $resultsap = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM wp_apelc_users WHERE icno = %s", $name ) );
foreach ($resultsap as $row) {
echo 'Name: ' . $row->name;
}
}
?>
<form method="post">
<div>
Your IC No: <input type="text" name="ICNo">
<input type="submit" name="submit" value="Submit" >
</div>
</form>
2
  • 1
    You should not use $name this way, SallyCJ has already written about it.
    – nmr
    Aug 1, 2019 at 12:23
  • ok i have updated my answer Aug 1, 2019 at 12:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.