我终于从 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 连接到数据库。我使用哪一个有关系吗?
最佳答案
第四个参数为mysql_connect()
不是数据库名称。它是一个 bool 值,指定是否建立额外的新连接或使用现有连接。大多数情况下,它被省略。使用mysql_select_db()
选择数据库。由于您没有在代码中选择数据库,因此您的查询可能会失败。
$db = mysql_connect('localhost', 'root', 'root');
if (!$db) echo mysql_error();
else mysql_select_db("database");
注意,我已从 mysql_connect()
调用中删除了 @
。 @
会抑制错误,并且可能会阻止您查看连接出了什么问题。
测试查询成功或失败时,不要die()
。相反,在开发应用程序时回显mysql_error()
。在生产中,您可以通过写入 error_log()
来替换 echo
。
if (!$result) {
echo mysql_error();
}
至于使用MySQLi代替基本的mysql_*
函数,MySQLi可以以面向对象的方式使用,并且还提供准备好的语句,使用起来更高效,也更安全。正如上面评论中提到的,PDO通常被推荐为最灵活的 API,用于通过 PHP 与 RDBMS 进行交互。
关于PHP + MySQL 查询 -> 这个 SQL 有什么问题(短),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7655852/