2013-05-08 16 views
0

我差不多一個小時試圖瞭解我在這裏做錯了什麼。這是沒有輸出。問題與搜索數組中的字符串

的連接是好的,該陣列是全數據

<?php header('Content-Type: text/html; charset=utf-8'); 

// Here's the argument from the client. 
$domain = $_GET['string']; 
$quest=$_GET['quest']; 
$event=$_GET['event']; 

$con = mysql_connect('localhost', '******', '********'); 
if (!$con) 
{ 
    die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("vocabulary", $con); 

$sql="SELECT * FROM `0` WHERE event_name = '".$event."' AND quest_id = '".$quest."'"; 

$result = mysql_query($sql); 

$row = mysql_fetch_array($result); 

$key = array_search($domain, $row); 

echo $key; 

mysql_close($con); 


?> 

任何想法佔地 感謝

+0

主要SQL注入漏洞。請查看轉義/ PDO。更多 - http://stackoverflow.com/search?q=sql+injection – Dogbert 2013-05-08 15:31:19

+1

你在$域有什麼? – 2013-05-08 15:32:24

+0

如果域名是你可能會具有轉義字符使結果不匹配 – 2013-05-08 15:33:28

回答

3

有幾件事情。

  1. 您正在從名爲0的表中進行選擇。我認爲你不應該這樣做。
  2. 因爲我懷疑0存在的表,我的猜測是,你在mysql_fecth_array有一個錯誤。嘗試在腳本的開頭放置error_reporting(E_ALL);
  3. array_search回報False如果沒有發現任何東西。改爲嘗試var_dump($key);
  4. 代碼有serious security problem。我建議你轉到PDOMySQLi

Bobby Tables!

+0

它確實而($行= mysql_fetch_array($結果)){ 回聲 「」; 回聲「​​」。 $ row ['**']。 「」; 回聲「​​」。 $ row ['**']。 「」; 回聲「​​」。 $ row ['**']。 「」; 回聲「​​」。 $ row ['**']。 「」; 回聲「​​」。 $ row ['**']。 「」; echo「」; } echo「」;它的工作完美..沒有問題,表名和連接 – 2013-05-08 15:39:17

+0

var_dump($ key); return bool(false) – 2013-05-08 15:40:39

+0

您的評論中有一個格式問題。請在所有代碼中放置'\'',以使其更具可讀性並禁用標記。 – cwallenpoole 2013-05-08 15:41:28

0

我覺得你的問題是,你沒有創建一個關聯數組 http://php.net/manual/en/function.array-search.php

您mysql_fetch_array返回了具有價值,但不是關鍵的數組,所以沒有什麼好存儲在$ key中。試試這個來代替:

$row = mysql_fetch_array($result, MYSQL_ASSOC) 

也義不容辭「你應該避免使用mysql_功能完全,並移動到庫MySQLi或PDO因爲mysql_已棄用」在此代碼

+0

***所有陣列都有鍵***。即使是數字數組。 'array_search'與數值數組一起工作。返回的密鑰恰好是一個數字,而不是一個字符串。此外,'mysql_fetch_array'默認使用'MYSQL_BOTH',所以數組有* *數字和相關聯的鍵。 – 2013-05-08 15:45:58

+0

啊,很高興知道。我不使用mysql_ – 2013-05-08 15:52:34