我终于从MS Access到MySQL毕业了。不幸的是,我甚至无法获得正确的查询。有人可以告诉我有什么问题吗?我一直收到我在php中指定的“无效查询”消息。
<?php
@ $db = mysql_connect('localhost', 'root', 'root', 'newdatabase');
if (!$db) {
die ('Failed to connect to the database.');
}
$query = "SELECT first FROM demographics";
$result = mysql_query($query);
if (!$result) {
die('invalid query');
}
while ($row = mysql_fetch_assoc($result)) {
echo $row['first'];
}
?>
另外,我正在阅读的书告诉我使用:
new mysqli('localhost', 'root', 'root', 'newdatabase')
连接而不是
mysql_connect
我在上面的代码中使用过。我无法使用 new mysqli 连接到数据库。我使用哪一个是否重要?
答案 0 :(得分:3)
mysql_connect()
的第四个参数不是数据库名称。它是一个布尔值,指定是否建立其他新连接或使用现有连接。大多数情况下,它被省略。使用mysql_select_db()
选择数据库。由于您未在代码中选择数据库,因此查询可能会失败。
$db = mysql_connect('localhost', 'root', 'root');
if (!$db) echo mysql_error();
else mysql_select_db("database");
注意我已从@
电话中删除了mysql_connect()
。 @
可以抑制错误,并可能阻止您查看连接出现的问题。
在测试查询的成功或失败时,请不要die()
。而是在开发应用程序时回显mysql_error()
。在制作中,您可以通过写echo
替换error_log()
。
if (!$result) {
echo mysql_error();
}
至于使用MySQLi而不是基本的mysql_*
函数,MySQLi可以以面向对象的方式使用,并且还提供准备好的语句,使用起来更高效,更安全。如上面的评论中所述,PDO通常被推荐为与PHP中的RDBMS交互的最灵活的API。