2014-10-02 89 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