0

キリル文字を使用すると、スクリプトに再び問題が発生します。私はフォームからデータを収集し、それをmysql dbに設定し、そのデータをWebページに表示する単純なphpスクリプトを持っています。スクリプトは可能な限り単純です。私はphpプログラミングが初めてなので、多くのツットを見ているので、話を短くするために、その単純なスクリプトです。ラテン文字を使用すると問題なく動作します。しかし。キリル文字の入力に同じスクリプト (明らかに機能します) を使用すると、「mysql_fetch_error」でエラーが表示されます!? インターネット上で同様の問題について多くのコメントがありましたが、簡単な答えはありません。照合は問題ありません。utf8-unicode、utf8-general、utf8-bin で試しましたが、何もありませんでした。

 <?php
 if(isset($_POST['submit'])){
$con=mysql_connect('x','x','x');
    if(!$con){
    die("Cant connect:".mysql_error());
 }
 mysql_query('SET NAMES "UTF8"');

 mysql_select_db("x",$con);
 $ins = sprintf('INSERT INTO x  (`Име_и_презиме`,`Датум_рођења`,`Занимање`,`Град`,`Земља`,`Имејл`,`Скајп`) VALUES 
("%s", "%s", "%s", "%s", "%s", "%s", "%s")', 
mysql_real_escape_string($_POST['ime']),
mysql_real_escape_string($_POST['datum']),
mysql_real_escape_string($_POST['zanimanje']),
mysql_real_escape_string($_POST['grad']),
mysql_real_escape_string($_POST['zemlja']),
mysql_real_escape_string($_POST['email']),
mysql_real_escape_string($_POST['skype'])
);
mysql_query($ins,$con);
mysql_close($con);
}
?>

<?php
$con=mysql_connect('x','x','x');
if (!$con){
die("Cant connect:" . mysql_error());
}
mysql_query('SET NAMES "UTF8"');

mysql_select_db ("x",$con);
$sql="SELECT * FROM x"; 
$myData=mysql_query($sql,$con);
echo "<table border=1>
<tr>
<td>Име и презиме</td>
<td>Датум рођења</td>
<td>Занимање</td>
<td>Град</td>
<td>Земља</td>
<td>Email</td>
<td>Skype</td>
 </tr>";
 while($record=mysql_fetch_assoc($myData)){
 echo "<tr>";
 echo "<td>" . htmlspecialchars($record['Име_и_презиме']) . "</td>";
 echo "<td>" . htmlspecialchars($record['Датум_рођења']) . "</td>";
 echo "<td>" . htmlspecialchars($record['Занимање']) . "</td>";
 echo "<td>" . htmlspecialchars($record['Град']) . "</td>";
 echo "<td>" . htmlspecialchars($record['Земља']) . "</td>";
 echo "<td>" . htmlspecialchars($record['Имејл']) . "</td>";
 echo "<td>" . htmlspecialchars($record['Скајп']) . "</td>";

 echo "</tr>";}
 echo "</table>";   

 mysql_close($con);  
 ?>

エラー: 警告: mysql_fetch_assoc(): 提供された引数は、46 行目の /home/xyz/public_html/form.php の有効な MySQL 結果リソースではありません

4

1 に答える 1

0

UTF-8でphpファイルを確認してください:

<?php

if(isset($_POST['submit'])){
    $con = mysql_connect('x','x','x');
    if(!$con){
        die("Cant connect:".mysql_error());
    }
    mysql_query('SET NAMES "UTF8"');

    mysql_select_db("x",$con);
    $ins = sprintf('INSERT INTO ДБ (`Име_и_презиме`,`Датум_рођења`,`Занимање`,`Град`,`Земља`,`Имејл`,`Скајп`) VALUES ("%s", "%s", "%s", "%s", "%s", "%s", "%s")', mysql_real_escape_string($_POST[ime]),mysql_real_escape_string($_POST[datum]),mysql_real_escape_string($_POST[zanimanje]),mysql_real_escape_string($_POST[grad]),mysql_real_escape_string($_POST[zemlja‌]),mysql_real_escape_string($_POST[email]),mysql_real_escape_string($_POST[skype])
);
    mysql_query($ins,$con);
    mysql_close($con);
}
?>

そして、代わりにmysqli拡張機能を使用してください...

于 2013-01-24T23:02:54.637 に答える