0

我已经创建了以下代码,我似乎无法找出它有什么问题,任何帮助将不胜感激。

<?php

$con = mysql_connect("host","user","password");

mysql_select_db("Stores", $con);

$street = mysql_query("SELECT Street FROM Sports WHERE Name = 'Nike'");

if (mysql_query("CREATE DATABASE $street", $con))
{
       echo "Success";
}

else
{
       echo "Fail";
}

mysql_close($con);

我一直在失败,有人能指出我正确的方向吗?

4

2 回答 2

4

这段代码有很多问题:

  1. 起初这可能不是很相关,但是 php mysql 扩展被标记为deprecated,请切换到 mysqli 或更好,PDO也在官方文档中指出。已弃用意味着它仅用于支持遗留代码(这意味着它不应该在新代码中使用)并且它将在将来的某个时候消失。我推荐 PDO,因为它是一个更加成熟、灵活和通用的数据库接口,如果您打算花时间学习一些东西,PDO 绝对是您的最佳选择。特别注意准备好的语句,它们将帮助您避免各种问题,而不必摸索各种转义函数。
  2. mysql_query 返回一个查询结果(作为资源),您应该使用某种 fetch 命令读取该结果 - 请参阅此处的 PDO 的 query() 方法的文档
  3. 我一点也不知道你为什么要在你的服务器上创建一个以你通过查询找到的街道命名的新数据库?你可能应该解释你的意图是什么,我很确定这不会做你想做的事。

根据评论编辑:

对我来说,切换到 PDO 的主要优点是

  • 面向未来:使用 mysql_ 扩展程序,您有一天会升级 php,扩展程序将永远消失。PDO 不会很快发生这种情况。
  • 支持多个数据库:传统上,每个数据库品牌都由 mysql 中自己的专有扩展提供服务。PDO 统一了所有这些扩展,这意味着通过 1 个 API,您可以使用现有的大多数常见数据库。请注意,它不会消除这些数据库之间的方言差异,但是为它们提供一个 API 绝对是一大优势。
  • PDO 积极鼓励您使用准备好的语句,这通常被认为是针对各种安全问题(如 SQL 注入)的防弹但简单的保护 - 无需为了使常规 SQL 语句有些安全而需要做的所有转义废话.

关于为每个用户创建数据库的评论,我真的认为您需要阅读一些关于关系数据库的介绍性材料。最常见的应用程序由一个数据库支持,该数据库在大多数情况下包含一组固定的表(例如,商店、客户、订单、订单项)以及它们之间的关系。例如,一家商店有许多客户,每个客户都有一个或多个订单,每个订单包含一个或多个项目。所有数据都是通过查询利用这些关系来获取的,例如使用连接来提取属于一个订单的所有项目,或者列出与一个客户相关的所有订单。这里 重要 的是 , 除了 最 特殊 的 情况 之外 , 只有一个每个数据类型的表。也就是说,所有客户都存储在一张表中,所有订单都存储在一张表中,以此类推。

我没有时间阅读所有内容,但databaseprimer.com可能有助于您开始了解这些概念。

于 2013-01-02T02:06:49.440 回答
3

mysql_query将返回一个资源。您必须先使用获取数据mysql_fetch_assoc($query)

在查询后添加此行:

 $fetch = mysql_fetch_assoc($streets);

然后在您的第二个查询中将 $streets 更改为 $fetch['street']。

于 2013-01-02T02:05:30.337 回答