我试图将我的项目从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);
如果有人能告诉我如何解决这个错误,我将不胜感激。提前谢谢。
答案 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将是相同的 - 相当丑陋,但至少是可行的。