PDA

View Full Version : ارور در pdo



DelDard
یک شنبه 14 دی 1393, 19:48 عصر
سلام دوستان کد من اینه




$query = "INSERT INTO members(
name,
family,
email,
city,
gender,
phone,
date,
ip
) VALUES (
$name,
$family,
$email,
$city,
$gender,
$phone,
$date,
$ip
)"
;
$result1 = $db->prepare($query); //line:198

$result1->execute();
if($result1 === false){
echo '<p class="bread-crumb">error';
echo '</p>';
}


ولی این ارور رو میده




<b>Fatal error</b>: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '
tA==,
stGdqMStpJa5tA==,
tehran,
female,
1234,
1393-10-14 19:21,
:' at line 11' in C:\xampp\htdocs\proj\s\form.php:198
Stack trace:
#0 C:\xampp\htdocs\proj\s\form.php(198): PDO-&gt;prepare('INSERT INTO mem...')
#1 {main}
thrown in <b>C:\xampp\htdocs\proj\s\form.php</b> on line <b>198</b><br />


یه فرم سادست که قبلا کار میکرد ولی الان که خواستم به pdo تغیرش بدم اینطوری شد
نمیدونم چیکارش کنم! میشه کمک کنید؟
ممنون

hsgpro
یک شنبه 14 دی 1393, 20:00 عصر
سلام
این کد رو امتحان کنید:



<?php
try{
$sql = $pdo->prepare(
'INSERT INTO `members` (`name`, `family`, `email`, `city`, `gender`, `phone`, `date`, `ip`)
VALUES (:name, :family, :email, :city, :gender, :phone, :date, :ip)');
$sql->execute(array(
':name' => $name,
':family' => $family,
':name' => $name,
':email' => $email,
':city' => $city,
':gender' => $gender,
':phone' => $phone,
':date' => $date,
':ip' => $ip
));
}
catch(PDOException $e){
echo '<p class="bread-crumb">error';
echo '</p>';
}
?>

H:Shojaei
یک شنبه 14 دی 1393, 21:03 عصر
نکته ی اجرا نشدن اینه که وقتی فیلدی یه کلمه کلیدی از دیتابیس هست باید داخل `` قرار بگیره مثل فیلد date

DelDard
یک شنبه 14 دی 1393, 23:28 عصر
هر دو شما دوستان درست گفتید. هم به `` نیاز داره هم باید متعیر ها به سورت ارایه براش تعریف میشد
ممنون ازتون

H:Shojaei
دوشنبه 15 دی 1393, 12:34 عصر
هر دو شما دوستان درست گفتید. هم به `` نیاز داره هم باید متعیر ها به سورت ارایه براش تعریف میشد
ممنون ازتون
باید نداریم اینجا به خاطر مسائل امنیتی میتونید مقادیر رو bind کنید ولی به صورت عادی هم انجام بدید مشکلی و خطایی ندارید اگه مقادیر رو داخل '' بذارید خطای اون هم برطرف میشه...