将值插入函数中的表会收到错误,但是当尝试在函数外部的表中插入值时,它可以正常工作

时间:2014-06-18 20:25:59

标签: php mysql sql mysqli

因此,此方法适用于向表中插入值:

$link = mysqli_connect("example.com","a","b","c");
$sql = 'INSERT INTO `table` (`field1`, `field2`) VALUES ("foo", "bar");';
mysqli_query($link, $sql);

然而,这种方法失败了:

$link = mysqli_connect("example.com","a","b","c");
function foobar(){
    $sql = 'INSERT INTO `table` (`field1`, `field2`) VALUES ("foo", "bar");';
    mysqli_query($link, $sql);  
}

这就是错误:

Warning: mysqli_query() expects parameter 1 to be mysqli, null given in foo/bar/example.php

我需要在函数内部使用mysqli查询,因为我循环遍历多个值。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

这是因为你在函数范围内没有$ link变量。 (含义$ link为null) 您可以将连接资源作为参数(在您的情况下为$ link变量)传递给函数,或者使用global。

将连接资源作为参数传递将是:

$link = mysqli_connect("example.com","a","b","c");
 function foobar($link){
    $sql = 'INSERT INTO `table` (`field1`, `field2`) VALUES ("foo", "bar");';
    mysqli_query($link, $sql);
}

答案 1 :(得分:1)

$link = mysqli_connect("example.com","a","b","c");
function foobar($link){
    $sql = 'INSERT INTO `table` (`field1`, `field2`) VALUES ("foo", "bar");';
    mysqli_query($link, $sql);  
}