Php PDO::FETCH_ASSOC不工作?

Php PDO::FETCH_ASSOC不工作?,php,mysql,Php,Mysql,我有这个代码,基本上我需要从最近安装的行中获取新ID…我有这个代码,但它不适用于我 $sql = "INSERT INTO `cd_photo` (id, album, date) VALUES (NULL, '" .mysql_real_escape_string($_POST['album']) . "', '" . $date . "')"; if (@mysql_query($sql)) { $result = $sql->fetch(PDO::FETCH_ASSOC); $pa

我有这个代码,基本上我需要从最近安装的行中获取新ID…我有这个代码,但它不适用于我

$sql = "INSERT INTO `cd_photo` (id, album, date) VALUES (NULL, '" .mysql_real_escape_string($_POST['album']) . "', '" . $date . "')";

if (@mysql_query($sql)) {
$result = $sql->fetch(PDO::FETCH_ASSOC);
$pageid = $result['id'];
echo $pageid;
echo header('Location: newimg.php?id=' .$pageid);
}

有什么想法吗?

您正在混合两种不同的PHP MySQL API。我建议您使用PDO,因为mysql已被淘汰。以下是您在中的操作方法:


PDO和mysql是独立的库。另外,
$sql
在您的代码中是一个字符串,而不是对象。另一个问题是:跳过
id
列,除非它被设置为具有自动递增功能的主键。我建议重新阅读PHP手册的PDO部分:我想使用mysql\u insert\u id(),因为这是我习惯使用的,然而,我知道它被贬低了,当我四处搜索时,我发现了上面的解决方案,但它不起作用,我宁愿不使用PDO,因为我对它不太熟悉。上面的“解决方案”有很多问题,正如这些评论中已经列出的那样。从PHP5.5.0开始,mysql扩展就被弃用了。这意味着不仅mysql\u insert\u id()被弃用,mysql\u query()也被弃用。如果您正在寻找一个快速解决方案,并且您的PHP版本似乎小于5.5.0,那么mysql_insert_id()将完成这项工作。但是,如果您想转到MySQLi或PDO_MySQL,则需要更改所有查询的逻辑,并使用PDO或MySQLi驱动程序连接到数据库并执行其中一个答案中已指定的查询。
$dsn = 'mysql:dbname=dbname;host=dbhost';
$user = 'dbusername';
$pass = 'dbpass';
$pdo = new PDO($dsn, $user, $pass);

$sql = "INSERT INTO `cd_photo` (album, date) VALUES (:album,:date)"
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':album', $album);
$stmt->bindParam(':date', $date);
$stmt->execute();
$pageid = $pdo->lastInsertId();