2016-11-18 59 views
0

可見我有簡單的基於mSQL的詞彙 - 它阻止php5.4升級後的工作到PHP 28年6月5日php5.6變量不是代碼

在形式上我送一個變量來解決諸如page.php?word=xxx

in page.php它應該從table.word中獲取$ word和table.definition

與數據庫的連接正在工作。

錯誤日誌看起來

array(1) { ["word"]=string(5) "xxx" } bool(true) 

警告:mysqli_fetch_array()預計參數1被mysqli_result,串給出

我的代碼是

ini_set('display_errors', 'On'); 
error_reporting(E_ALL); 

$configfile = "config.php"; 
require $configfile; 
$db = mysqli_connect("$host", "$username", "$password") or die ("could not connect to mysql"); 
mysqli_select_db($db, "$databasename") or die ("no database"); 
mysqli_query($db, "SET NAMES 'utf8' COLLATE 'utf8_polish_ci'"); 

function mysqli_result($db,$row=0,$col=0){ 
    $numrows = mysqli_num_rows($db); 
    if ($numrows && $row <= ($numrows-1) && $row >=0){ 
     mysqli_data_seek($db,$row); 
     $resrow = (is_numeric($col)) ? mysqli_fetch_row($db) : mysqli_fetch_assoc($db); 
     if (isset($resrow[$col])){ 
      return $resrow[$col]; 
     } 
    } 
    return false; 
} 

$word = ""; 

var_dump($_GET);  
var_dump(isset($word)); 

if($word) 
    {  
     $getWord=mysqli_query($db, "SELECT word,definition FROM mdglossary WHERE word LIKE '$word' ORDER BY word"); 
    } 
    else {....} 

if($getWordArray=mysqli_fetch_array($getWord, MYSQLI_BOTH)) 
    { 
    do 
     { 
     echo "...."; 
     } 
    while($getWordArray=mysqli_fetch_array($getWord)); 
    } 
else {....} 

我試圖找到通過互聯網和這個頁面解決「hundret」時間,但我不明白髮生了什麼ned和爲什麼它根本不起作用。

+0

你的查詢失敗...看起來你實際上想要一個ALTER TABLE類型的查詢。 –

+0

正好在'$ getWord = mysqli_query ...'上面'嘗試添加'echo $ word;'以查看是否正在設置變量。 – Jacey

+0

只是一個註釋,但是這個代碼很容易被SQL注入。另外我覺得你需要清除它「在表單中,我發送一個變量來解決像page.php?word = xxx在page.php它應該從table.word與table.definition獲得$ word」,因爲如果你想要從請求中得到它應該只是$ _GET ['word'] – kyle

回答

0

您已將詞語設置爲等於無。

$word = ""; 

那麼你的SQL看起來就像這樣

SELECT word,definition FROM mdglossary WHERE word LIKE '' ORDER BY word 

所以你想找什麼也沒有在一個字列。這是你的意圖嗎?

+0

no - 我試着設置變量用xxx來填充這個地址 - 沒有這個也不行 – Marcin

+0

呵呵?你在你的代碼中設置了一句沒錯的東西,它不會影響你使用的代碼,因爲你已經在你的代碼中將它設置爲'',它將覆蓋get – ATechGuy