کمک کمک! insert میکنه ولی میگه نکردم!!

travel000

New Member
PHP:
<?php 

$nam=$_POST['nam'];
$pas=$_POST['pas'];
$year=$_POST['year'];
$month=$_POST['month'];
$day=$_POST['day'];
$sex=$_POST['sex'];
$mar=$_POST['mar'];
$tel=$_POST['tel'];
$mob=$_POST['mob'];
$mail=$_POST['mail'];
$zip=$_POST['zip'];
$adrs=$_POST['adrs'];


$dt=($year=='0' || $month=='00' || $day=='00')? 'null' : ("'".$year.'-'.$month.'-'.$day."'");
$sx=($sex=='') ? 'null' : "'$sex'";
$mr=($mar=='') ? 'null' : "'$mar'";
$ad=($adrs=='') ? 'null' : "'$adrs'";
$zp=($zip=='') ? 'null' : "'$zip'";
$tl=($tel=='') ? 'null' : "'$tel'";
$mb=($mob=='') ? 'null' : "'$mob'";
$query2= "insert into member set id='$nam' , pas='$pas' , age=$dt , sex=$sx , married=$mr , membership='".date('Y-m-d')."' , email='$mail' , address=$ad , zipcode=$zp , phone=$tl    , mobile=$mb , inventory=0";
echo "$query2<br>";


$db=mysql_connect('localhost','root','');
if(!$db)
{
    echo " خطا: ارتباط با پایگاه داده برقرار نشد ";
    exit();
}
if( !mysql_select_db("travel_agency",$db) )
{
    echo " خطا: بانک مورد نظر انتخاب نشد ";
    exit();
}

mysql_query("SET NAMES 'utf8'", $db);
//$query0="insert into member set id='yyyoo9osss' , pas='555555' , age=null , sex=null , married=null , membership='2009-05-16' , email='u@g' , address='Ù†' , zipcode=null , phone=null , mobile=null , inventory=0";

$result2=mysql_query($query2,$db);
if($result2)
{
    echo "ok";
    echo mysql_affected_rows();
}
else
{
echo "fail";
//mysql_affected_rows();
}
mysql_close($db);

?>

وقتی اجرا میشه پیغام میده "fail" یعنی باید عمل insert نکرده باشه ولی میرم می بینم تو جدول رکورد مرد نظر اضاف شده!! در هیچ حالتی پیغام مربوط به بلوک if را چاپ نمیکنه ولی همیشه هم insert میکنه! و در ضمن چک کردم mysql_affected_rows را برابر -1 میده در حالی که insert شده!

حالا اگه به query2 یه رشته ساده بذارم مثل :
PHP:
$query0="insert into member set id='yyyoo9osss' , pas='555555' , age=null , sex=null , married=null , membership='2009-05-16' , email='u@g' , address='Ù†' , zipcode=null , phone=null , mobile=null , inventory=0";

همه چیز درس میشه!!! عجب!! پس query اشکال داره!
 

Masoud1365

مدیر انجمن
احتمالا مشکل از کوئری هستش . من که با mysqli کار میکنم هم راحته هم از این جور اشکالات عجیب غریب نداره !
 

travel000

New Member
mysql_error گفت که رکورد تکراری داری insert میکنی در حالی که مطمئنم این طور نیس!!

خواهشاً یکی بگه مشکل از کجاس؟!!
 

BehrouzPc

پــــادشــاه فــلــــش
1 - تمامی مقدارهای رو توی '' بزار حتی null ها رو

2 - به صورت زیر هم میشه این کار رو انجام داد ، اینجوری که میگی نباید مشکلی داشته باشه
PHP:
INSERT INTO member (x,y,z) VALUES ('x' ,'y','z')
 

Masoud1365

مدیر انجمن
من هم با گفته ی جناب بهروز خان موافقم ! اگر که کدهاتون رو به صورت اصولی بنویسید کمتر از این مشکل ها به وجود میاد :wink:
 

D.A.V.O.O.D

Member
سلام چرا باید از " " استفاده کرد به جای ' ' ؟
یعنی فرقشون چیه ؟ ممنون

قاعدتا " با ' نباید تفاوتی داشته باشه ...

منم با نظر دوستان موافقم ، چون خودم تجربه دیدن پیغام های عجیب و غریب زیادی از Mysql بوده ام . از اون به بعد تصمیم گرفتم که تمامی دستورات mysql را اصولی بنویسم . یعنی به این صورت :

PHP:
insert into `test (`test1`,`test2`) values ('$Test1','$Test2')
توضیح :
1. تمامی چیزهایی که مربوط به دیتابیستون می باشه مانند نام جدول ، فیلد و ... را داخل ` ` قرار بدهید .
2. تمامی چیزهایی که می خواهید مقدار دهی کنید را میان ' ' قرار بدهید .

امیدوارم مشکلتون رفع بشه ...

نکنه مهم :
کلا دستور شما واسه insert اشتباه هستش !
set را برای آپدیت یک table به کار می برند و به کار گیری آن برای Insert اشتباه است !

$query2 را به صورتی که بالا گفتم در بیار مطمئنا درست می شه ...
 
آخرین ویرایش:

BehrouzPc

پــــادشــاه فــلــــش
سلام چرا باید از " " استفاده کرد به جای ' ' ؟
یعنی فرقشون چیه ؟ ممنون
دوست عزیز بنده منظورم از ' '
دابل کوتیشن نبود
فرقی نداره
منظورم این بود که مقدارها می بایست بین
' <---> ' قرار بگیره حالا چه دبل چه تکی
و البته از روشی که در بالا نوشتم هم حتما برای insert استفاده نمایید

 

جدیدترین ارسال ها

بالا