PDA

View Full Version : insert در بانک access



helal92
یک شنبه 27 بهمن 1387, 20:10 عصر
سلام دوستان
در درج اطلاعات در بانک access به یه مشکل برخوردم که دوستان اگه ممکنه کمک کنن.....


<?
$conn=odbc_connect("user","","");

if($conn)
{
$d=date("d/m/Y g:i");
$query="insert into profile(fname,lname,age,date) values ('name','family','22',$d)";
$row = odbc_exec($conn,$query);
if($row)
print "seccess";
else
print "fail";

}
?>

خطای موجود....


Untitled DocumentWarning: odbc_exec() [function.odbc-exec (http://barnamenevis.org/forum/function.odbc-exec)]: SQL error: [Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement., SQL state 37000 in SQLExecDirect

در حالیکه این دستور از لحاظ syntax هیچ مشکلی نداره.....

Yousha
یک شنبه 27 بهمن 1387, 21:01 عصر
"insert into profile (fname, lname, age, date) values ('name', 'family', '22', '" . $d . "')"

smhnaji
یک شنبه 27 بهمن 1387, 21:07 عصر
۱. آیا اگه date رو اینسرت نکنی هم به مشکل برمی‌خوری؟

من خدا رو شکر دیگه با Access کار نمی‌کنم و تو سیستم هم نصب نمی‌شه! و یادم هم نیست که date ها توی اکسس به چه فرمتی هست. اما...
۲. ببین شاید فرمت اون رو رعایت نکردی.

۳. به‌جای
$d از
'$d' استفاده کن ببین مشکل حل میشه یا نه.


نکته‌ی گرامری: بعد از این که من این پست رو فرستادم، فهمیدم که آقا/خانم یوشا جواب داده بودن. یه وقت سود تفاوت:چشمک: نشه!

helal92
یک شنبه 27 بهمن 1387, 22:28 عصر
ممنون
[ببخشید.ولی می خوام اشکالاتم رو در مورد db در همین تاپیک مطرح کنم.امیدوارم دوستان سرزنش نکنن...(البته فکر نکنم زیاد باشه)]
مشکل بعدی(خدا بگم چه کارش کنه....:ناراحت:)
با اجرای دستور زیر نمی دونم چرا نتیجه 1- هست......


$query="select * from post";
$result = odbc_exec($conn,$query) ;
$num = odbc_num_rows($result);

البته برای این کار از حلقه و odbc_fetch_row استفاده کردم.ولی مرحله بعدی رو که دوبراه می خوام از اول بخونم چه کارش کنم.....

helal92
دوشنبه 28 بهمن 1387, 19:06 عصر
دوستان خواهشا دست ما رو بگیرید.خدایی کار ما گیره.....

smhnaji
دوشنبه 28 بهمن 1387, 22:02 عصر
دوست خوبم
چیزی که من تو اینترنت دیدم، این بود که خیلی‌ها با همین مشکل تو مواجه هستن.

بهتره که این روش رو امتحان کنی:


<html>
<body> <?php
$conn=odbc_connect('northwind','','');
if (!$conn)
{exit("Connection Failed: " . $conn);}
$sql="SELECT * FROM customers";
$rs=odbc_exec($conn,$sql);
if (!$rs)
{exit("Error in SQL");}
echo "<table><tr>";
echo "<th>Companyname</th>";
echo "<th>Contactname</th></tr>";
while (odbc_fetch_row($rs))
{
$compname=odbc_result($rs,"CompanyName");
$conname=odbc_result($rs,"ContactName");
echo "<tr><td>$compname</td>";
echo "<td>$conname</td></tr>";
}
odbc_close($conn);
echo "</table>";
?> </body>
</html>

(این کد از سایت w3schools.com گرفته شده است)

کد گویا هستش، اما اگه حال خوندن کاملشو نداری، قسمتی که برای تو مهمه، اینجاست:



$sql="SELECT * FROM customers";
$rs=odbc_exec($conn,$sql);
if (!$rs)
{exit("Error in SQL");}
while (odbc_fetch_row($rs))
{
$f1=odbc_result($rs,"Field1");
$f2=odbc_result($rs,"Field2");
echo "<tr><td>$f1</td>";
echo "<td>$f2</td></tr>";
}

helal92
دوشنبه 28 بهمن 1387, 22:44 عصر
ممنون.ولی مشکل من این نیست.من تا حالا سراغ اکسس نرفته بودم ولی الان مجبورم از اون استفاده کنم.من به تعداد رکوردهای دی بی برای pagination احتیاج دارم.برای این کار از این تابع استفاده کردم ولی جواب رو -1 بر می گردونه.نمی دونم چرا.
راه حل هایی برای رفع این مشکل دارم ولی دیدم این تابع هست دیگه از اونها استفاده نکنم......
مثلا....


$query_1 = "select count(*) from post";
$result_1 = odbc_exec($conn, $query_1);
$num = odbc_result($result_1, 1);

smhnaji
دوشنبه 28 بهمن 1387, 22:53 عصر
این موضوعی که شما گفتی، به عنوان یه باگ تو پی‌اچ‌پی معرفی شده:
http://bugs.php.net/bug.php?id=13051
درضمن یه نگاهی هم به گوگل بندازیم، می‌بینیم که خیلیا این مشکلو دارن:
http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=odbc_num_rows+returns+%22-1%22
توی manual پی‌اچ‌پی درباره‌ی تابع odbc_num_rows هم از این bug یاد شده!:
http://ir.php.net/odbc_num_rows

دوست خوبم، پیشنهاد من اینه که از آلترنیتو هاش (مثل همونی که خودت گفتی) استفاده کنی.