<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>HattaraTecLog</title>
	<atom:link href="http://teclog.hattara.info/?feed=rss2&#038;tag=9" rel="self" type="application/rss+xml" />
	<link>http://teclog.hattara.info</link>
	<description>LinuxネタとかPHPネタとかの技術ログ</description>
	<lastBuildDate>Tue, 18 Nov 2014 12:15:20 +0000</lastBuildDate>
	<language>ja</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.8</generator>
	<item>
		<title>PHP &amp; PearのDB.php でプレースホルダを使う。</title>
		<link>http://teclog.hattara.info/?p=13</link>
		<comments>http://teclog.hattara.info/?p=13#comments</comments>
		<pubDate>Fri, 05 Sep 2008 09:57:31 +0000</pubDate>
		<dc:creator><![CDATA[hattara]]></dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[]]></category>

		<guid isPermaLink="false">http://teclog.hattara.info/?p=13</guid>
		<description><![CDATA[書籍をちゃんと読めばよかったんだけど、 ちょっと前にはまったことをメモしておく。 phpでDBを扱うときにプレ [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>書籍をちゃんと読めばよかったんだけど、<br />
ちょっと前にはまったことをメモしておく。</p>
<p>phpでDBを扱うときにプレースホルダを使うわけですが、<br />
プレースホルダを利用した時点で、エスケープ処理がされるわけなんです。</p>
<p>が、それを勘違いしまして、<br />
mysql_real_escape_stringしたわけですよ。</p>
<p>そしたら、やっぱり↓みたいのがでましたね。</p>
<blockquote><p>
Warning: mysql_real_escape_string(): Access denied for user: &#8216;aaaa@localhost&#8217; (Using password: NO) in aaa.php on line 384<br />
Warning: mysql_real_escape_string(): A link to the server could not be established in aaa.php on line 384
</p></blockquote>
<p>まあ、エラーの内容はちょっと変ることもあるだろうけど、<br />
僕がしくじった時はこんなんがでてました。<br />
ようするに、2重でエスケープ処理してまったって話ですね。</p>
<p>ちなみにプレースホルダってのは、↓みたいなのですね。</p>
<blockquote><p>
$options = array(&#8220;test&#8221;, &#8220;hogemoge.com&#8221;, &#8220;bbb@hogemoge.com&#8221;);<br />
$sql     = &#8220;select colm from tablename where name = ? AND domain = ? AND email = ? &#8220;;<br />
$aaa     = $db->query($sql, $options);
</p></blockquote>
<p>$sqlに代入してるSQL文に『?』が3つあるわけですが、<br />
$options配列に入っている内容も3つあります。<br />
各々エスケープ処理されて、『?』のところに充当されるわけですね。</p>
<p>というわけで、phpではプレースホルダすれば、エスケープ処理いらないよというお話でした。</p>
]]></content:encoded>
			<wfw:commentRss>http://teclog.hattara.info/?feed=rss2&#038;p=13</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
