2014-10-02 83 views
0

我有一個mysqli插入語句在PHP中根本不會插入。它也不會給我任何來自mysqli_error的錯誤信息,它只是失敗。這是代碼。mysqli不會插入

$con=mysqli_connect("localhost","root","root","my_db"); 
// Check connection 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
function addItems($name, $cost, $type){ 
$sql= "INSERT INTO `items`(`name`, `cost`, `type`) VALUES ('egg', 50, 'harvest')"; 
if (!mysqli_query($con,$sql)) { 
    die('Error: ' . mysqli_error($con)); 
} 
echo "1 record added"; 
} 

當我調用函數時,它會創建sql變量就好了,但它會死。我可以從這張表中選擇,但不能插入。正在使用的用戶具有完全權限。

我發現了幾個似乎有同樣問題的其他人,但他們的解決方案並不適合我。 我做錯了什麼?

+4

'$ con'不在函數範圍內 – Steve 2014-10-02 13:44:33

+0

我知道整數並不重要,但爲了以防萬一,請嘗試將引號放在50左右。 – Dimitri 2014-10-02 13:48:15

+0

@Dimitri不會修復它。 – 2014-10-02 13:49:00

回答

3

由於@steve表示,$con超出了功能範圍。

解決這個問題的兩種方法。使用global;

function addItems($name, $cost, $type){ 
global $con; 

注入

function addItems($name, $cost, $type, $con){ 

應優先於第二個選項(對象注射)的對象。全球幾乎從未是一個好主意

@steve &世界。

+0

應該優先考慮第二個選項。全球幾乎不是一個好主意 – Steve 2014-10-02 13:49:00

+0

@Steve同意!請注意,在回答 – 2014-10-02 13:49:35

+0

@hd時,我是否也必須在調用函數時通過$ con? – 2014-10-02 13:53:52