PDA

View Full Version : سوال: ثبت id در جدول



ravand
یک شنبه 18 دی 1390, 22:26 عصر
من قبلا اين كد رو كه مي نوشتم مقدار id هر ركورد ثبت ميشد ولي نميدونم چرا الان نميشه و فقط توي ديتابيس براي هر ركورد مقدار id صفر ميده:
به نظر شما مشكل كار من چيه؟

<?php
$handle=mysql_connect('localhost','root','');
if($handle==false){
die("can not connect mysql.\r\n");
}
$db=mysql_select_db('date');
if($db==false){
die("can not connect db.\r\n");
}
$s1=$_POST['s'];
$s2=$_POST['s2'];
$d1=$_POST['d'];
$d2=$_POST['d2'];
mysql_query("INSERT INTO time (`id`,`s`,`s2`,`d`,`d2`) VALUES ('id','$s1','$s2','$d1','$d2')")or die(mysql_error());
$num=mysql_affected_rows($handle);
if($num==1){
echo ".ارسال شد";
}
else
if($num == 0){
echo".ارسال نشد ";
}
mysql_close($handle);
?>

idocsidocs
دوشنبه 19 دی 1390, 10:26 صبح
فیلد id کلید اصلی هست؟

بنظرم time جز کلمات رزو شده باشه و نباید از اون به عنوان اسم جدول استفاده کنید.
از این کد استفاده کنید:


mysql_query("INSERT INTO `time_tb` (`id`,`s`,`s2`,`d`,`d2`) VALUES ('id','$s1','$s2','$d1','$d2')")or die(mysql_error());


برای اینسرت کردن من از این تابع استفاده می کنم:



public function my_insert($arr,$tbl)
{
foreach ($arr as $field => $value)
{
$field_array[] = $field;
$value_array[] = $value;
}
$fields = implode(",",$field_array);
$values = implode('","',$value_array);
$sql = "INSERT INTO `$tbl` ($fields) VALUES (\"$values\")";
$this->mydb->query($sql);
return $this->mydb->insert_id;
}


توی آرگومان اول این تابع کافیه که مقادیری که باید اینسرت بشن رو به صورت آرایه به تابع بدید و توی آرگومان دوم اسم جدولی که می خواید مقادیر توی اون اینسرت بشن رو قرار بدید.

این تابع اینسرت رو انجام می ده و مقدار کلید اصلی سطر جدید رو بر می گردونه.

با این کد، کارتون سریع تر و راحت تر می شه.

امیـرحسین
یک شنبه 02 بهمن 1390, 00:03 صبح
این قسمت رو:

foreach ($arr as $field => $value)
{
$field_array[] = $field;
$value_array[] = $value;
}
$fields = implode(",",$field_array);
$values = implode('","',$value_array);
میشه اینجوری کوتاه کرد:

$fields = implode(",", array_keys($arr));
$values = implode('","',array_values($arr));