mysqli_query参数

时间:2013-02-25 18:51:43

标签: php mysql mysqli

我试图将我的项目从mysql转换为mysqli,但它似乎给了我一个错误

Warning: mysqli_query() expects at least 2 parameters, 1

这是我的数据库连接

$mysqli = new mysqli();
$mysqli->connect('localhost', 'root', '', 'myscript');

这是查询

$sql = mysqli_query("SELECT * FROM settings WHERE id='1'") or die (mysqli_error());
$results = mysqli_fetch_array($sql);

如果有人能告诉我如何解决这个错误,我将不胜感激。提前谢谢。

2 个答案:

答案 0 :(得分:2)

您可以尝试使用面向对象的PHP方式执行查询,而不是混合和匹配面向对象的PHP和常规PHP:

$mysqli = new mysqli();
$mysqli->connect('localhost', 'root', '', 'myscript');
if($result = $mysqli->query("SELECT * FROM settings WHERE id='1'")){

    //DO STUFF

    $result->close();
}else{
     printf("Error: %s\n", $mysqli->error);
}

答案 1 :(得分:0)

请不要将你的项目从mysql转换为mysqli 将其转换为PDO Mysqli只适用于初学者手册中的愚蠢示例 - 随着您的进步,它将使您的生活更加艰难。

所以,而不是mysqli只使用PDO 它几乎是一样的:

$opt = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);
$pdo = new PDO('mysql:dbname=myscript;host=localhost','root','', $opt);

$stm = $pdo->prepare("SELECT * FROM settings WHERE id=?");
$stm->execute(array(1));
$data = $stm->fetch();

注意参数化查询支持 - 驱动程序之间移动的主要原因 - 已在此代码中使用过 即使在这样的小例子中,PDO也更好。方式更好。而对于更复杂的问题,mysqli将变得完全无法使用,而PDO将是相同的 - 相当丑陋,但至少是可行的。