0

我试图将我的一个项目从 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);

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

4

2 回答 2

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);
}
于 2013-02-25T18:56:06.390 回答
1

请不要将您的项目从 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 将是相同的 - 非常丑陋但至少是可行的。

于 2013-02-25T19:01:50.313 回答