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

标签 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 连接到数据库。我使用哪一个有关系吗?

最佳答案

第四个参数为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/

相关文章:

php - MySQL:唯一键

mysql - 更新MySQL字段;条件 = 两个数字之间的字符串字段

SQL Server 读取带有外键的列时出现问题

mysql - 如何使用 Python 或 SQL 中的联接或任何其他操作合并两个数据集/表

php - 一个玩家表 - 两个团队下拉菜单 - 如何没有双人玩家(mysql、php、ajax)

php - 使用php-deployer时如何设置发布限制?

php - 设置php mysql的开始时间和结束时间

sql - MYSQL CONCAT() 失败但我不知道为什么

php - 我如何使用 php 在多维数组中按键分组项目

php - 将 JavaScript 代码转换为 PHP : Determining what return (1) means in javascript