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

PHP+;MySQL查询->;什么';这条SQL有什么问题(短),php,mysql,sql,database,Php,Mysql,Sql,Database,我终于从MS Access毕业到MySQL了。不幸的是,我甚至连一个问题都找不对。有人能告诉我怎么了吗?我一直收到我在php中指定的“invalid query”消息 <?php @ $db = mysql_connect('localhost', 'root', 'root', 'newdatabase'); if (!$db) { die ('Failed to connect to the database.'); } $query = "SELECT first FRO

我终于从MS Access毕业到MySQL了。不幸的是,我甚至连一个问题都找不对。有人能告诉我怎么了吗?我一直收到我在php中指定的“invalid query”消息

<?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'];
}

?>
与…相对连接

mysql_connect
我在上面的代码中使用了。我无法使用新的mysqli连接到数据库。我使用哪一个重要吗?

第四个参数不是数据库名称。它是一个布尔值,指定是否建立额外的新连接或使用现有连接。大多数情况下,它被省略。用于选择数据库。由于您尚未在代码中选择数据库,因此您的查询可能会失败

$db = mysql_connect('localhost', 'root', 'root');
if (!$db) echo mysql_error();
else mysql_select_db("database");
注意:我已经从
mysql\u connect()
调用中删除了
@
@
抑制错误,并可能阻止您查看连接中出现的问题

测试查询的成功或失败时,不要死()。而是在开发应用程序时回显mysql\u error()。在生产中,您可以通过写入
error\u log()
替换
echo

if (!$result) {
  echo mysql_error();
}
至于使用MySQLi而不是基本的
mysql*
函数,MySQLi可以以面向对象的方式使用,并且还提供了准备好的语句,这些语句可以更高效地使用,也更安全。正如上面的评论中所提到的,通常建议将其作为与来自PHP的RDBMS交互的最灵活的API。

的第四个参数不是数据库名称。它是一个布尔值,指定是否建立额外的新连接或使用现有连接。大多数情况下,它被省略。用于选择数据库。由于您尚未在代码中选择数据库,因此您的查询可能会失败

$db = mysql_connect('localhost', 'root', 'root');
if (!$db) echo mysql_error();
else mysql_select_db("database");
注意:我已经从
mysql\u connect()
调用中删除了
@
@
抑制错误,并可能阻止您查看连接中出现的问题

测试查询的成功或失败时,不要死()。而是在开发应用程序时回显mysql\u error()。在生产中,您可以通过写入
error\u log()
替换
echo

if (!$result) {
  echo mysql_error();
}

至于使用MySQLi而不是基本的
mysql*
函数,MySQLi可以以面向对象的方式使用,并且还提供了准备好的语句,这些语句可以更高效地使用,也更安全。正如上面的评论中所提到的,它通常被推荐为与来自PHP的RDBMS交互的最灵活的API。

请使用代码块,而不是引用代码块,因为代码块支持语法着色。PHP有3种不同的访问mysql的方法。mysqli类/函数、mysql函数和PDO类。PDO通常是推荐的选项。还要注意,对于新代码,您希望使用MySQLI扩展,而不是MySQL扩展。MySQL扩展仅为与(古老的)MySQL 3.x数据库兼容而维护。MySQL 4.x引入了MySQLI API(现在甚至4.x都很老了),请在代码中使用代码块而不是引号块,因为代码块支持语法着色。PHP有3种不同的方式访问MySQL。mysqli类/函数、mysql函数和PDO类。PDO通常是推荐的选项。还要注意,对于新代码,您希望使用MySQLI扩展,而不是MySQL扩展。MySQL扩展仅为与(古老的)MySQL 3.x数据库兼容而维护。MySQL 4.x引入了MySQLI API(甚至4.x现在也很老了)@Jerry很乐意帮忙。祝你好运。请务必阅读SQL注入和使用
mysql\u real\u escape\u string()
。这与使用Access不同。说明:使用@会抑制错误消息,而不是错误本身!在函数调用中不要使用@,除非您完全了解要抑制的消息类型以及它们出现的原因。太多人认为使用@实际上可以消除错误@杰瑞很乐意帮忙。祝你好运。请务必阅读SQL注入和使用
mysql\u real\u escape\u string()
。这与使用Access不同。说明:使用@会抑制错误消息,而不是错误本身!在函数调用中不要使用@,除非您完全了解要抑制的消息类型以及它们出现的原因。太多人认为使用@实际上可以消除错误!