WebホストのPHPが最近更新されました。これで古いMySQLクエリで「廃止予定」というエラーメッセージが表示されます。 mysql_queryコードをPDOに変換する必要があります。ここから私が始めていることは次のとおりです。PDOエラー:キャラクタセットを初期化できませんutf8_general_ci
<?
$con = mysql_connect("localhost", "username", "password");
if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("database_name", $con);
$result = mysql_query("select * from event_calendar where event_year >= '2017' order by event_datenumber asc")
or die(mysql_error());
while($row = mysql_fetch_array($result)) {
$event_date = $row['event_date'];
$event_month = $row['event_month'];
$event_monthname = $row['event_monthname'];
$event_year = $row['event_year'];
$event_datenumber = $row['event_datenumber'];
$event_starttime = $row['event_starttime'];
$event_location = $row['event_location'];
$event_city = $row['event_city'];
$event_state = $row['event_state'];
$event_directions = $row['event_directions'];
$testmonth = date("F");
$testmonth2 = date("m");
$testdate = date("d");
$testyear = date("Y");
$testdatenumber = $testyear.$testmonth2.$testdate;
?>
<?
if ($testdatenumber <= $event_datenumber){
?>
<p>
<b><? echo $event_monthname.' '.$event_date ?></b> - <? echo $event_starttime ?><br>
<? echo $event_location ?><br>
<? echo $event_city ?>, <? echo $event_state ?><br>
<a href="<? echo $event_directions ?>" target="_blank"><b>Directions</b></a>
</p>
<? } else {} ?>
<? } ?>
私は全く新しいので、どこから始めるべきか分かりません。また、今日は「No database selected」とも言われています。
私はラインでPDOラインにこの自分自身を書き換えるatemptingてきたし、これまでのところ、私は取得しています:以下のように上記のエラーで参照
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2019] Can't initialize character set utf8_general_ci (path: /usr/share/mysql/charsets/)' in /my_file_location/test-this.php:21 Stack trace: #0 /my_file_location/test-this.php(21): PDO->__construct('mysql:host=localhost', 'username', 'password') #1 {main} thrown in /my_file_location/test-this.php on line 21
マイライン21は、次のとおりです。
$db = new PDO('mysql:host=localhost;dbname=database_name;charset=utf8_general_ci', 'username', 'password');
私は今ちょうどUTF8にutf8_general_ciを変更し、現在は次のようなメッセージを持っていました:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000] [1044] Access denied for user 'username'@'localhost' to database 'database_name'' in /my_file_location/test-this.php:21 Stack trace: #0 /my_file_location/test-this.php(21): PDO->__construct('mysql:host=localhost', 'username', 'password') #1 {main} thrown in /my_file_location/test-this.php on line 21
M私はWebホストがWindowsオペレーティングシステムを使用していると私は信じていて、アップグレードされたばかりのPHPバージョンは5.6.30ですが、mySQLデータベースについては何も知りません。
更新:OK、2,3日後に読んで、ぶつけて、私は書き直しを思いついた。私は今、次の作業があります。
<?php
$db = new PDO('mysql:host=localhost;dbname=database_name;charset=utf8mb4', 'username', 'password', array(PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
foreach($db->query('SELECT * FROM event_calendar WHERE event_year >= 2017 ORDER BY event_datenumber ASC') as $row) {
$testmonth = date("F");
$testmonth2 = date("m");
$testdate = date("d");
$testyear = date("Y");
$testdatenumber = $testyear.$testmonth2.$testdate;
if ($testdatenumber <= $row['event_datenumber']) {
echo "<p>";
echo "<u><h4>".$row['event_monthname']." ".$row['event_date'].", ".$row['event_year']."</h4></u>";
echo "<b>What:</b> ".$row['event_title']."<br/>";
echo "<b>Where:</b> ".$row['event_location']." - ".$row['event_address1'].", ".$row['event_city'].", ".$row['event_state']." ".$row['event_zip']."<br/>";
echo "<b>When:</b> ".$row['event_starttime']."<br/>";
echo "<b>When:</b> <a href='".$row['event_directions']."' target='_blank'><b>Click here</b></a>";
echo "</p>";
} else {}
}
?>
今、私はちょうど私が基準を満たす唯一の最初の3行に結果を制限する方法を見つけ出すことができることを望みます。私はこれまでにいくつかのことを試しましたが、まだ成功していません。私はそれが動作するものを見つけるまでそれは読書とテストに戻っていると思います。
pdoについてインターネット上でチュートリアルを読む方法は、あなたの古いコードをここでstackoverflowにダンプするだけではなく、誰かがまっすぐあなたのためにそれを変換することを期待しています。どうすればpdoを習得しますか?あなたは間違った場所にいるはずです。 – Ghost
このリンク[MySQL ExtensionからPDOへの移行](https://www.sitepoint.com/migrate-from-the-mysql-extension-to-pdo /)おそらくあなたを助ける –
情報のためのリンクを提供するのに十分な少なくとも親切であるために、Yu Jiaao、ありがとう、とても有難い。 – Blackhatter1