php - PDO returns empty array as result -
i have simple search form, use send post request php script using ajax. want script search database keyword in title column, , return rows finds it. posted data looks "searchword=test1", test1 in content of text input.
i have 2 rows in database, 1 has title of test1, , of test2. if select * articles can see results fine. if type select * articles title 'test1'; console, correct result, php script returns empty array.
no idea i'm doing wrong here, appreciated.
my php:
try { $hostname = "localhost"; $username = "root"; $password = ""; $db = new pdo("mysql:host=$hostname;dbname=topdecka_ptc",$username, $password); if (!empty($_post["searchword"])) { $searchword = $_post["searchword"]; $query = $db->prepare("select * articles title %:seachword%"); $query->execute(array(':searchword' => $searchword)); $result = $query->fetchall(pdo::fetch_assoc); echo json_encode($result); die(); } else { $query = $db->prepare('select * articles'); $query->execute(); $result = $query->fetchall(pdo::fetch_assoc); echo json_encode($result); die(); } } catch (pdoexception $e) { echo "error!: " . $e->getmessage() . "<br/>"; die(); }
firstly, forgot $ sign %:seachword% per assignment:
sidenote: there's typo noticed in seachword should read searchword per ':searchword' => $searchword
$searchword = $_post["searchword"]; however, i'd instead:
like :seachword then
$query->execute(array(":searchword" => "%" . $searchword . "%")); example syntax:
$sqlprep = $conn->prepare("select `column` `table` `column` :word"); $sqlprep->bindvalue(':word', '%value%'); also make sure form have post method , element indeed named , no typos.
add error reporting top of file(s) find errors.
<?php error_reporting(e_all); ini_set('display_errors', 1); // rest of code sidenote: error reporting should done in staging, , never production.
- add
$db->setattribute(pdo::attr_errmode, pdo::errmode_exception);right after connection opened, catch potential errors, if any.
Comments
Post a Comment