以下の私の質問
作業クエリ
$sorgum = "SELECT kolon_etiketler, kolon_yazar, kolon_baslik, kolon_resim_baslik, kolon_resim_url, kolon_yazi, kolon_ytarihi FROM tb_yazilar WHERE kolon_statu = 'onay' AND kolon_yazar ='".tire_bosluk_olsun($_GET["rd_ozne"])."' AND kolon_baslik ='".tire_bosluk_olsun($_GET["rd_nesne"])."' ORDER by kolon_onaytarihi DESC";
動作しないクエリ
$sorgum = "SELECT kolon_etiketler, kolon_yazar, kolon_baslik, kolon_resim_baslik, kolon_resim_url, kolon_yazi, kolon_ytarihi FROM tb_yazilar WHERE kolon_statu = 'onay' AND kolon_yazar ='".tire_bosluk_olsun($_GET["rd_ozne"])."' AND noktalamasiz(kolon_baslik) ='".tire_bosluk_olsun($_GET["rd_nesne"])."' ORDER by kolon_onaytarihi DESC";
動作しているものと動作していないものの違い
動作中:AND kolon_baslik = ...
非動作中:AND noktalamasiz(kolon_baslik) = ...
私のリンクプロセス
- ユーザーは通常の書面で記事のタイトルをdbに入力します
- ページが記事をリンクするとき、記事の著者タイトル情報を使用します。通常の記述形式は、句読点を削除してスペースをダッシュに置き換えるカスタム関数で上書きされます
私の目的
アドレスバーから、$_GET['nesne']
来ています。これは、記事のタイトルの句読点なしの構文です。また、スペース文字はダッシュ文字に置き換えられます。
私のMySQLテーブルでは、記事のタイトルは句読点とスペースを含む通常の形式です。
例:
私のMySqlテーブル:「ジョンの時計は機能していますか?」、URLアドレス「Is-Johns-Clock-Working」になります
私の質問
動作しないクエリでできることはありますか?削除された句読点をに与えることができない$_GET['nesne']
ので、mysqlテーブルとのタイトル行の句読点なしの状態の値を比較する必要があります$_GET['nesne']
。たぶん私は非常に間違った方向に進んでいるので、ユーザーがmysqlテーブルに句読点のあるタイトルと1つのタイトル列のみを入力できるようにする自動リンク方法を処理する正しい方法を教えてください。
編集
noktalamasiz =すべての句読点を削除するcustom-php関数。
tire-bosluk-olsun =ダッシュをスペースに置き換えます。したがって、最初のタイトルに句読点が含まれておらず、単語の間にスペースしか含まれていない場合、問題はなく、作業中のSQLのみを使用します。
function tire_bosluk_olsun ($tireli)
{
$tireli = trim($tireli);
$tireli = str_replace('-',' ',$tireli);
return $tireli;
}
function noktalamasiz($noktalamali) {
$noktalamali = trim($noktalamali);
$ara = array('.',',',';',':','...','?','!','-','—','/','\\','“','”','‘','’','"','\'','(',')','[',']','’','{','}','*','&','#','^','<','>','|');
$degistir = array('','','','','','','',' ','','','','','','','','','','','','','','','','','','','','','','',);
$noktalamali = str_replace($ara,$degistir,$noktalamali);
return $noktalamali;
}
動作しないものは何ですか
私のクエリがnoktalamasiz custom function
これを含む場合:noktalamasiz(kolon_baslik)
; その後、警告なしに空の画面が表示されました-通知またはエラー。-1エラーレベルで作業しています。
関連するphpコード全体
$sorgum = "SELECT kolon_etiketler, kolon_yazar, kolon_baslik, kolon_resim_baslik, kolon_resim_url, kolon_yazi, kolon_ytarihi FROM tb_yazilar WHERE kolon_statu = 'onay' AND kolon_yazar ='".tire_bosluk_olsun($_GET["rd_ozne"])."' AND noktalamasiz(kolon_baslik) ='".tire_bosluk_olsun($_GET["rd_nesne"])."' ORDER by kolon_onaytarihi DESC";
if ($beyan = $db_baglanti->prepare($sorgum))
{
/* execute statement */
$beyan->execute();
/* bind result variables */
$beyan->bind_result($etiketler, $yazar, $baslik, $resim_baslik, $resim_url, $yazi, $ytarihi);
/* fetch values */
while ($beyan->fetch())
{
echo '<div class="sol-icerik-kapsar">'."\r\n";
echo "\t".'<h1>'.$baslik.'</h1>'."\r\n";
echo "\t".'<img class="mansetresim" width="120" height="160" src="'.sitenin_koku.'img/manset/'.$resim_url.'" alt="'.$resim_baslik.'" title="'.$resim_baslik.'" />'."\r\n";
echo "\t".'<p><a href="'.sitenin_koku.'yazılar/'.bosluklar_tire_olsun($yazar).'">'.$yazar.'</a>'.' - '.turkcetarih('j F Y',$ytarihi).'</p>'."\r\n";
echo "\t".'<p>'.$yazi.'</p>'."\r\n";
echo "\t".'<p>'.$etiketler.'</p>'."\r\n";
echo '</div>'."\r\n";
}
/* close statement */
$beyan->close();
}