PHP + MySQL查询 - >这个SQL有什么问题(短)

时间:2011-10-05 01:34:30

标签: php mysql sql database

我终于从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 连接到数据库。我使用哪一个是否重要?

1 个答案:

答案 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。