简体   繁体   中英

PHP PDO Not Inserting to Database

im working on PDO's, i've been trying on this for many hours but still couldn't succeded to insert the inputs into the database. I dont get any errors, hence i get my $err -> succeded message. But no chance on inserting to database...

Would be glad if you can help.

note: about the user id, im getting the id from another table, column userid, and trying to insert it to another table, "params_user_id" column.

Here is my code :

if(isset($_POST["create"])) {
try{

$param1 = cleanInput($_POST["param1"]);
$param2 = cleanInput($_POST["param2"]);
$param3 = cleanInput($_POST["param3"]);
$param4 = cleanInput($_POST["param4"]);
$param5id = cleanInput($_POST["param5id"]);
$param6id = cleanInput($_POST["param6id"]);
$param7 = cleanInput($_POST["param7"]);
$param8id = cleanInput($_POST["param8id"]);
$param9 = cleanInput($_POST["param9"]);
$param10 = cleanInput($_POST["param10"]);
$param11 = cleanInput($_POST["param11"]);
$param12 = cleanInput($_POST["param12"]);
$param13 = cleanInput($_POST["param13"]);
$param14 = cleanInput($_POST["param14"]);
$param15 = cleanInput($_POST["param15"]);
$param16 = cleanInput($_POST["param16"]);
$param17 = cleanInput($_POST["param17"]);
$param18 = cleanInput($_POST["param18"]);
$param19 = cleanInput($_POST["param19"]);
$param20 = cleanInput($_POST["param20"]);
$param21 = cleanInput($_POST["param21"]);
$userid = $_SESSION[':userid'];
$datenow = date('Y-m-d H:i:s');


$create_params_query = "INSERT INTO `params`(`datenow`, `param1`, `param2`, `param3`, `param4`, `param5id`, `param6id`, `param7`, `param8id`, `param9`, `param10`, `param11`, `param12`, `param13`, `param14`, `param15`, `param16`, `param17`, `param18`, `param19`, `param20`, `param21`,`params_user_id`) VALUE(:datenow, :param1, :param2, :param3, :param4, :param5id, :param6id, :param7, :param8id, :param9, :param10, :param11, :param12, :param13, :param14, :param15, :param16, :param17, :param18, :param19, :param20, :param21, :userid)";

$create_params_do = $db->prepare($create_params_query);
$create_params_do -> bindParam(':datenow', $datenow, PDO::PARAM_STR);
$create_params_do -> bindParam(':param1', $param1, PDO::PARAM_STR);
$create_params_do -> bindParam(':param2', $param2, PDO::PARAM_STR);
$create_params_do -> bindParam(':param3', $param3, PDO::PARAM_STR);
$create_params_do -> bindParam(':param4', $param4, PDO::PARAM_STR);
$create_params_do -> bindParam(':param5id', $param5id, PDO::PARAM_INT);
$create_params_do -> bindParam(':param6id', $param6id, PDO::PARAM_INT);
$create_params_do -> bindParam(':param7', $param7, PDO::PARAM_STR);
$create_params_do -> bindParam(':param8id', $param8id, PDO::PARAM_INT);
$create_params_do -> bindParam(':param9', $param9, PDO::PARAM_STR);
$create_params_do -> bindParam(':param10', $param10, PDO::PARAM_STR);
$create_params_do -> bindParam(':param11', $param11, PDO::PARAM_STR);
$create_params_do -> bindParam(':param12', $param12, PDO::PARAM_STR);
$create_params_do -> bindParam(':param13', $param13, PDO::PARAM_STR);
$create_params_do -> bindParam(':param14', $param14, PDO::PARAM_STR);
$create_params_do -> bindParam(':param15', $param15, PDO::PARAM_STR);
$create_params_do -> bindParam(':param16', $param16, PDO::PARAM_STR);
$create_params_do -> bindParam(':param17', $param17, PDO::PARAM_STR);
$create_params_do -> bindParam(':param18', $param18, PDO::PARAM_STR);
$create_params_do -> bindParam(':param19', $param19, PDO::PARAM_STR);
$create_params_do -> bindParam(':param20', $param20, PDO::PARAM_STR);
$create_params_do -> bindParam(':param21', $param21, PDO::PARAM_STR);
$create_params_do->bindParam(':userid', $userid, PDO::PARAM_INT);

$create_params_do->execute() or die(print_r($create_params_do->errorInfo(), true));
//forgot to add when posting first sorry, i have that also.
}
catch(PDOException $e) {
$log->logError($e." - ".basename(__FILE__));
}


$err = "<div class=\"success\"><strong>"._("Congrats.")."</strong><br/>"._("Success.")."</div>";
}

You are missing

$create_params_do->execute();

at the end of params

Your query should be:

$create_params_query = "INSERT INTO `params`(`datenow`, `param1`, `param2`, `param3`, `param4`, `param5id`, `param6id`, `param7`, `param8id`, `param9`, `param10`, `param11`, `param12`, `param13`, `param14`, `param15`, `param16`, `param17`, `param18`, `param19`, `param20`, `param21`,`params_user_id`) VALUES(:datenow, :param1, :param2, :param3, :param4, :param5id, :param6id, :param7, :param8id, :param9, :param10, :param11, :param12, :param13, :param14, :param15, :param16, :param17, :param18, :param19, :param20, :param21, :userid)";

with VALUES not VALUE

To add to what Iorga side by default PDO is silent on errors so if you want to know what is happening, you will need to tell PDO to be noisy by setting setting PDO error_mode as show below. For your case VALUE or VALUES works (tested with MySQL 5.5). Catching the exception error will give you the really reason why it is not committing to the database.

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM