2013-03-06 106 views
0

此程序中的所有內容除了當我嘗試向我的數據庫中插入變量時都起作用。過程失敗,而不是將變量($ q,$ w,$ e)傳遞給數據庫。請注意,如果我將變量更改爲整數或字符串,則過程會成功。你可以幫我嗎? THX調用php變量不起作用

<html> 
    <body> 
    <?php 
    $q = $_POST['q']; 
    $w = $_POST['w']; 
    $e = $_POST['e']; 
    // bring variables from browser works 
    $con=mysql_connect("mysql5.000webhost.com","*****","*****","*****"); 
    if (!$con) 
     { 
     die('Could not connect: ' . mysql_error()); 
     } 
    // connection to server works 

    $query = mysql_query('INSERT INTO `a5637490_test`.`test` (`1`, `2`, `3`, `4`) VALUES ($q, 14, $w, $e)'); 
    mysql_close($con); 

    echo 'success'; 

    ?> 
    </body> 
    </html> 

回答

0

您的字符串變量未正確轉義。你需要引用他們像

$query = mysql_query("INSERT INTO a5637490_test.test (1, 2, 3, 4) VALUES ('$q', 14, '$w', '$e')"); 
1

試試這個:

$query = mysql_query("INSERT INTO a5637490_test.test (1, 2, 3, 4) VALUES ('$q', 14, '$w', '$e')"); 

需要注意的是:mysql_擴展已被棄用,而你的代碼這種方式很容易受到SQL injection,使用PDO或準備語句代替。

+1

我認爲這裏有一個小打字錯誤,圍繞INSERT語句中的引號在上述情況下將雙重或其解析錯誤 – 2013-03-06 06:01:20

+0

它會給你語法錯誤 – 2013-03-06 06:01:54

+0

@HankyPankyㇱ - 對不起,我從OP問題中複製它。現在更新,謝謝。 – 2013-03-06 06:05:24

0
$query = mysql_query("INSERT INTO a5637490_test.test (1, 2, 3, 4) VALUES ($q, 14, $w, $e)"); 

您必須使用雙引號。單引號不允許直接在字符串中注入變量。

0

試試這個:

$query = mysql_query("INSERT INTO a5637490_test.test (1, 2, 3, 4) VALUES ('".$q."', 14, '".$w."', '".$e."')"); mysql_close($con); 
0

您需要使用雙引號

$query = mysql_query("INSERT INTO a5637490_test.test (1, 2, 3, 4) VALUES ($q, 14, $w, $e)");