PDA

View Full Version : مبتدی: مشکل در query string با پارامتر فارسی



Site Admin
جمعه 20 آذر 1394, 21:08 عصر
سلام من خیلی با PHP وارد نیستم
یک سری اطلاعات رو با PHP از طریق کوئری استرینگ میگیریم شبیه این

Show.php?code=15&info=تست


محتویات فایل SHOW


<?php



header('Content-Type: text/html; charset=utf-8');

$hostname='localhost';
$username='udb';
$password='pass';

$code = $_GET['code'];
$info= $_GET['info'];


$dbh=new PDO("mysql:host=$hostname;dbname=moerapp",$username,$password);
$dbh=new PDO("mysql:host=$hostname;dbname=moerapp",$username,$password);


}

echo json_encode($response);


$count=$dbh->exec("INSERT INTO tbl_test (code,info) VALUES ('$code','$info')");


}catch(PDOException $e) {
echo $e->getMessage();
}

?>


نوع فیلد info از نوع varchar و Collation utf8_general_ci می باشد

وقتی کوئری استرینگ فارسی میفرستم در جدول نامفهومه مشکلی با درج اطلاعات ندارم فقط مشکلم ارسال مقدار فارسی هست

مهرداد سیف زاده
جمعه 20 آذر 1394, 22:15 عصر
در زمان ساخت دیتابیس حتما باید utf8_persian_ci انتخاب کنید
تیبل قبلی رو پاک کنید و از sql زیر برای ساخت تیبل استفاده کنید

CREATE TABLE `tbl_test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`info` varchar(255) COLLATE utf8_persian_ci NOT NULL,
`code` varchar(255) COLLATE utf8_persian_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci

کد زیر رو خودم تست کردم

<?php$dsn = 'mysql:host=localhost;dbname=pdo';
$username = 'udb';
$password = 'pass';
$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
);
$link = new PDO($dsn, $username, $password, $options);




$info = isset($_GET['info'])?trim($_GET['info']):null;
$code = isset($_GET['code'])?trim($_GET['code']):null;




if($code && $info)
{


$statement = $link->prepare("INSERT INTO `tbl_test` ( `info`, `code`)
VALUES ( :INFO,:CODE");
$statement->execute(array(
":INFO" => $info,
":CODE" => $code
));


echo $link->lastInsertId();
}

Site Admin
شنبه 21 آذر 1394, 00:01 صبح
دستت درست دمت گرم