電子書籍の厳選無料作品が豊富!

PHP初心者です

PHP 5.2.5
MySQL 5.1.22

レンタルサーバーのphpのバージョンが php5.2.5ではpdoがバグで使えないらしいのでmysqliを使おうとしています。PHP 5.2.5でもmysqliはバグありますか?

mysqliでMYSQLに接続するにはどうすればいいのでしょうか?
いままではこんな感じでしたがmysqliにするとどんなコードになるのでしょうか?




$link=mysql_connect('localhost', 'user', 'pass')or die(mysql_error());
mysql_select_db(user');
mysql_query('SET NAMES UTF8');

$start=1;
$hyouji=10;



$recordSet = mysql_query(sprintf('SELECT * FROM hoge2 ORDER BY id LIMIT %d, %d' , ',$start,$hyouji));


<?php
while ($table = mysql_fetch_assoc($recordSet)) {
?>
<tr>
<td><?php print($table['id']); ?></td>
<td><?php print($table['name']); ?></td>
</tr>
<?php
}
?>

A 回答 (5件)

mysql_



mysqli_
に変えるだけでほとんど対応できます。
引数の順番が変わっていることはよくあるので、マニュアルでチェックしてください。
Google検索すればだいたい引っかかります。
    • good
    • 0
この回答へのお礼

回答ありがとうございます
何とかmysqliで動くようになりました。ありがとうございました

お礼日時:2013/08/17 18:04

> To_aru_Userさん


あ、確かにご指摘の通りですね。

むしろ、htmlspecialcharsがないことのほうが、問題あるかもね。

この回答への補足

htmlspecialcharsはパフォーマンスのことを考えてデーターベースに入れる前に実行してます(使い方は間違っていますが)

補足日時:2013/08/13 00:16
    • good
    • 0

kosukejlampnetさんの回答に補足。



PDOでUTF-8を一貫して使用する分にはPHP5.2でも問題ありません。
しかし、オブジェクト生成時の文字セット指定の方法が異なるので注意してください。
http://me.beginsprite.com/archives/889

こちらで紹介しているリンクも参考にどうぞ。
http://detail.chiebukuro.yahoo.co.jp/qa/question …

なお、指摘されている「PDOのバグ以前の話」について。
sprintfで%dを指定しており、(配列を含み)どんな値がPOSTされてもintに変換されるのでセキュリティホールはありません。
    • good
    • 0
この回答へのお礼

いつも頼ってばっかりで申し訳ないのですが
質問にあるコードをmysqliで手続き型へ書き直していただけませんか?
素人なのでオブジェクト型はもう少し学んでからにします

お礼日時:2013/08/13 00:35

先の質問で指摘されたPDOのバグというのは↓の記事が出典だろうけど・・・。


http://www.tokumaru.org/d/20100701.html#p01

特殊な条件化で・・・。という条件付です。
一貫してUTF8を利用する場合には発生しない現象です。

ちょっと聞きかじった程度で十分に理解していない人も多いですからねぇ。
人の話を鵜呑みにせず、ご自身で検証することが何よりです。

ところで、質問文に書かれたコードを書いているようではPDOのバグ以前の話・・・。

$start=1;
$hyouji=10;
が絶対に固定なら問題ないけど、明らかにページングの処理ですよね。外部から来る値をエスケープなしに利用しているのは無施錠で外出するようなもの・・・。
あたかもドアに鍵をつけずに防犯カメラを買おうとしているみたいです。

サーバーの文字コードがUTF8でDBもUTF8で、ファイルの文字コードもUTF8であるなら素直にPDO使ったほうがよっぽど安全。
    • good
    • 0
この回答へのお礼

PHPADMIN関係の文字コードはUTF8です。phpもUTF8です 
コアサーバーのデーターベースの文字コードがUTF8がありませんでした!なのでサーバーはEUC-JPになってます。(EUC-JP、UNICODE、SHIFT_JIS)の三つしかないです

文字化けはとくにないすが・・・


ご指摘のとおりページングです。しかし、回答者のためにコードを短くしました。

お礼日時:2013/08/13 00:14

まず、mysqliが使える環境かどうかはphpinfo()などで確認しておいてください



mysqliは手続き型とオブジェクト指向型に二種類のやり方があります。
とりあえずmysql関数からの移行がメインであれば手続き型でよいでしょう。
ほとんどのmysql関数をmysqliに書き換え、引数の順番を調整するだけで
さほど問題なく移植できると思います。

ただし手続き型は非推奨なのでできればオブジェクト指向型に変更された方がよいでしょう
詳しくはマニュアルを参照されると良い例がたくさん出ています
    • good
    • 0
この回答へのお礼

回答ありがとうございます
素人なので簡単に導入できるなら手続き型でもいいのですがどうすればいいかわかりません
mysqlをmysqliにする・・だけはわかるんですが

お礼日時:2013/08/13 00:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!