从 mysql 数据库发送和检索阿拉伯语数据
send and retrive arabic data from mysql database
我想从 mysql 数据库中获取阿拉伯语数据 我写了 php 代码但它给了我 ??????关于阿拉伯语数据有什么帮助吗??
<?php header('Content-Type: charset=utf-8');
$link=mysqli_connect("localhost","root","","arabicd");
mysql_set_charset('utf8',$link);
if (mysqli_connect_errno($link))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysql_query("SET character_set_results = 'utf8'");
mysql_query("character_set_client = 'utf8'");
mysql_query("character_set_connection = 'utf8'");
mysql_query("character_set_database = 'utf8'");
$result = mysqli_query($link,"SELECT question,answer FROM ask ");
while ($row = mysqli_fetch_array($result))
{
$output[]=$row;
}
print(json_encode($output));
if($data){
echo $data;
}
mysqli_close($con);
?>
- 虽然您可以只使用
set names utf8
而不是所有那些令人毛骨悚然的查询,但阿拉伯语没有任何问题,干杯:)
- 您正在混合使用
mysql_*
和 mysqli_*
,这是不允许的
- 即使允许互换使用
mysql
和 mysqli
连接,您仍以不同于预期的顺序将参数传递给 query
函数
- 你应该在连接失败的情况下退出脚本(或者做任何事,只是改变执行流程)
- 那行
print(json_encode($output));
容易出错,如果 table 没有结果怎么办?永远不会进入循环并且$output
不会被定义,所以你必须用空数组初始化$output
,检查结果集是否为空并在单独的块中处理它也是一个好习惯
- 此外,最好将 table 名称和列括在反引号 (
`
) 中,以防列具有保留关键字的名称
这是修复错误后代码的工作版本
<html>
<meta charset="utf-8">
<?php
$link = mysql_connect("localhost","root","");
if ($link === false)
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
exit;
}
mysql_select_db("arabicd", $link);
mysql_query("SET NAMES utf8");
$result = mysql_query("SELECT `ask`.`question`,`ask`.`answer` FROM `ask` ", $link);
$output = array();
while ($row = mysql_fetch_array($result))
{
$output[]=$row;
}
print(json_encode($output));
if(isset($data))
{
echo $data;
}
mysql_close($link);
?>
</html>
只需在 HTML 页面的标记中使用它....
meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
在元词前使用 <
不,不要使用mysql
接口,使用mysqli
。
不,不要使用 SET NAMES
,请使用 mysqli_set_charset
.
做SHOW CREATE TABLE
;您可能会发现您要写入的列是 CHARACTER SET latin
。必须是utf8.
像 \u0633
这样的文本意味着您需要添加 JSON_UNESCAPED_UNICODE
作为 json_encode
的第二个参数。
在您的 PHP:
中使用此代码
$db= mysqli_connect('localhost','root','225352','project');
$SQL= 'SET CHARACTER SET utf8';
mysqli_query($db,**$SQL**);)
or die ( mysqli_error($SQL) );
我想从 mysql 数据库中获取阿拉伯语数据 我写了 php 代码但它给了我 ??????关于阿拉伯语数据有什么帮助吗??
<?php header('Content-Type: charset=utf-8');
$link=mysqli_connect("localhost","root","","arabicd");
mysql_set_charset('utf8',$link);
if (mysqli_connect_errno($link))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysql_query("SET character_set_results = 'utf8'");
mysql_query("character_set_client = 'utf8'");
mysql_query("character_set_connection = 'utf8'");
mysql_query("character_set_database = 'utf8'");
$result = mysqli_query($link,"SELECT question,answer FROM ask ");
while ($row = mysqli_fetch_array($result))
{
$output[]=$row;
}
print(json_encode($output));
if($data){
echo $data;
}
mysqli_close($con);
?>
- 虽然您可以只使用
set names utf8
而不是所有那些令人毛骨悚然的查询,但阿拉伯语没有任何问题,干杯:) - 您正在混合使用
mysql_*
和mysqli_*
,这是不允许的 - 即使允许互换使用
mysql
和mysqli
连接,您仍以不同于预期的顺序将参数传递给query
函数 - 你应该在连接失败的情况下退出脚本(或者做任何事,只是改变执行流程)
- 那行
print(json_encode($output));
容易出错,如果 table 没有结果怎么办?永远不会进入循环并且$output
不会被定义,所以你必须用空数组初始化$output
,检查结果集是否为空并在单独的块中处理它也是一个好习惯 - 此外,最好将 table 名称和列括在反引号 (
`
) 中,以防列具有保留关键字的名称
这是修复错误后代码的工作版本
<html>
<meta charset="utf-8">
<?php
$link = mysql_connect("localhost","root","");
if ($link === false)
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
exit;
}
mysql_select_db("arabicd", $link);
mysql_query("SET NAMES utf8");
$result = mysql_query("SELECT `ask`.`question`,`ask`.`answer` FROM `ask` ", $link);
$output = array();
while ($row = mysql_fetch_array($result))
{
$output[]=$row;
}
print(json_encode($output));
if(isset($data))
{
echo $data;
}
mysql_close($link);
?>
</html>
只需在 HTML 页面的标记中使用它....
meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
在元词前使用 <
不,不要使用mysql
接口,使用mysqli
。
不,不要使用 SET NAMES
,请使用 mysqli_set_charset
.
做SHOW CREATE TABLE
;您可能会发现您要写入的列是 CHARACTER SET latin
。必须是utf8.
像 \u0633
这样的文本意味着您需要添加 JSON_UNESCAPED_UNICODE
作为 json_encode
的第二个参数。
在您的 PHP:
中使用此代码$db= mysqli_connect('localhost','root','225352','project');
$SQL= 'SET CHARACTER SET utf8';
mysqli_query($db,**$SQL**);)
or die ( mysqli_error($SQL) );