PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مشکل در ارسال محتوای Html به فایل Php



ayma
November 28th, 2014, 20:20
این کد صفحه Html است




<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!DOCTYPE HTML>
<html>
<body>

<form action="insert.php" method="post">
rrslink: <input type="text" name="rrslink"><br>
sitename: <input type="text" name="sitename"><br>
type: <input type="text" name="cate"><br>



<input type="submit">
</form>

</body>
</html>



و این پایینی هم کد PHP




<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<?php
$servername = "localhost";
$username = "Myuser";
$password = "Mypass";
$dbname = "Mydb";

//echo $_POST["rrslink"]."-------->".$_POST["sitename"]."---------->".$_POST["$cate"];
$rrslink=$_POST["rrslink"];
$sitename=$_POST["sitename"];
$cate= intval($_POST["cate"]);

try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception

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


$sql = "INSERT INTO rrsTB(rrslink,sitename,type)


VALUES ($rrslink,$sitename,$cate)";


// use exec() because no results are returned
$conn->exec($sql);

echo "New record created successfully";
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}

$conn = null;
?>




هر چقدر سرچ کردم ، فکر کردم نتونستم دلیل این خطا رو پیدا کنم




INSERT INTO rrsTB(rrslink,sitename,type) VALUES (http://www.tabnak.ir/fa/rss/allnews,tabnak,0)
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 '://www.tabnak.ir/fa/rss/allnews,tabnak,0)' at line 4


اولش فکر می کردم چون تابع intval رو برای تبدیل رشته به عدد نزاشتم این خطا رو می ده درست نشد ، بعدش فکر کردم که یکی از فیلدها کلمات کلیدی هست تغییرش دادم بازم درست نشد ، بعدش فکر کردم شاید محتویاتی که ارسال میشن خالی هستن اما چاپشون کردم و دیدم مشکلی نیست و ...

ms313
November 28th, 2014, 23:17
قبل مقدار یه دونه این تابع رو ارسال کنید که تک کوتیشن بذاره واسه مقادیر


$rrslink = $conn->quote($rrslink );

اینو واسه همه متغییر ها انجام بده و تست کن .

ayma
November 28th, 2014, 23:58
قبل مقدار یه دونه این تابع رو ارسال کنید که تک کوتیشن بذاره واسه مقادیر


$rrslink = $conn->quote($rrslink );

اینو واسه همه متغییر ها انجام بده و تست کن .

سلام. با bind نوشتم کد اجرا شد اما کد شما رو هم تست می کنم . فردا میگم نتیجه چی شد تا فرق این روش رو با Bind بدونم

ms313
November 29th, 2014, 12:51
برای اجرای کئوری می توان از سه نوع متد متفاوت استفاه کرد
کوئری های ساده توسط متد PDO::query اجرا می شنود و یک سی از کلاس PDOStatement را بر می گردانند .
که در اینجا باید از تک کوتیشن استفاده بشه که تو اینجا از تابع PDO::qoute استفاده می کنیم که تا کوتیشنی به کئوری اضافه کنه
روش دوم هم اینی هست که شما استفاده کردین PDO::exec کئوری رو اجرا می کنه ولی تعداد سطر ها رو مهم بر می گردونه یه کمی هم سریعتر از خود query است
حالا متد سوم از همشون بهتر استفاده از متد PDO::prepare هست که در این صورت باید bindValue یا bindParam استفاده کنید که از نظر و سرعت و امنیت هم بهتر هست .