php - $_POST variables populated, but nothing posted in mysql db -


i have basic form file upload section. when submit form, nothing submitted db. when debug x-debug, can see $_post variables populated , correct.

this form:

<form id="classifiedsform" enctype="multipart/form-data" action="{$self}" method="post" autocomplete="off">         <fieldset>             <label>basic details</label>             <section>                 <label for="headline">headline</label>                 <div><input type="text" id="headline"  name="headline" required title="a headline ad">                 </div>             </section>             <section><label for="img">add image<br><span>image should 300x300px , jpg or png. don't worry. curvy corners thing.</span></label>                 <div>                     <input type="file" id="img" name="img">                 </div>             </section>             <section>                 <label for="description">description</label>                 <div><input type="text" id="description"  name="description" required title="a description ad">                 </div>             </section>             <section>                 <label for="contact">contact</label>                 <div><input type="text" id="contact"  name="contact" required title="a contact email address">                 </div>             </section>             <section>                 <label for="category">category</label>                 <div>                     <select name="category" id="country">                         <optgroup label="category">                             {foreach item=c from=$categories}                                 <option name="category" value="{$c.name}">{$c.name}</option>                             {/foreach}                         </optgroup>                     </select>                 </div>             </section>             <section>                 <label for="buysell">sign newsletter?</label>                 <div>                     <input type="radio" id="yes_radio" name="buysell" value="1"><label>buy</label>                     <input type="radio" id="no_radio" name="buysell" value="0"><label>sell</label>                 </div>             </section>             <section>                 <div>                     <button name="submit" class="submit" value="update" type="submit">update</button>                 </div>             </section>         </fieldset>     </form> 

and controller:

include '../common.php';  session_start();  $userid = $_session['email']['id'];   if(empty($_session['email'])) { header("location: ../login.php"); die("redirecting login.php"); }  $title = 'your profile';   //categories query  try { $sql = "select * `categories` order `name` asc";  $result = $pdo->query($sql); } catch (pdoexception $e) { $error = 'error fetching classifieds: ' . $e->getmessage(); include '../includes/error.html.php'; exit(); }  foreach ($result $row) { $categories[] = array(     'id' => $row['id'],     'name' => $row['name']); }  if ($_server['request_method'] == "post"){ try {     $sql = "insert `classifieds` set     `headline` = :headline,     `description` = :description,     `contact` = :contact,     `buysell` = :buysell,     `category` = :category,     `user_id` = $userid";      $s = $pdo->prepare($sql);     $s->bindvalue(':headline', $_post['headline']);     $s->bindvalue(':description', $_post['description']);     $s->bindvalue(':contact', $_post['contact']);     $s->bindvalue(':buysell', $_post['buysell']);     $s->bindvalue(':category',$_post['category']);     $s->bindvalue(':userid', $userid);     $s->execute(); } catch (pdoexception $e) {     $error = 'error adding advert.';     include '../includes/error.html.php';     exit();  } }  $smarty->assign('title', $title); $smarty->assign('categories', $categories); $smarty->assign('userid', $userid); $smarty->display('add-classifieds.tpl'); 

and mysql table:

create table `classifieds` (   `id` int(11) not null auto_increment,   `create_date` timestamp not null default current_timestamp,   `headline` varchar(255) not null,   `img` varchar(255) default null,   `description` varchar(255) not null,   `contact` varchar(255) not null,   `buysell` int(1) not null,   `category` varchar(255) not null,   `user_id` int(11) not null,   primary key (`id`),   key `user_id` (`user_id`) ) engine=innodb auto_increment=39 default charset=latin1; 

any massively appreciated. thanks.

$sql = "insert `classifieds` set `headline` = :headline, `description` = :description, `contact` = :contact, `buysell` = :buysell, `category` = :category, `user_id` = $userid"; 

the last line incorrect, should :userid. should error though (number of variables doesn't match number of parameters in prepared statement).

while in development mode, should echo exception message:

echo $e->getmessage();

that would've led solution.


Comments