0

所以我正在研究一些将一段文本和一个 id 插入表格的代码。我向代码发送文本和用户名。我想取用户名,然后从 users 表中选择与其对应的 id。然后我将它插入到文本表中。

我试过这个:

$id = mysql_query("SELECT users.id FROM users WHERE name='$username'");

mysql_query("INSERT INTO `shouts` (`id`, `user`, `text`, `datetime`) VALUES (NULL, '$id', '$text', '$datetime');");

但它不起作用,因为变量$id保存了sql数据。我怎样才能把这些数据变成整数?

4

5 回答 5

3

手册

返回的结果资源应该传递给 mysql_fetch_array() 和其他处理结果表的函数,以访问返回的数据。

同样来自手册:

不鼓励使用此扩展程序。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。

要回答您的问题,请尝试以下操作:

$id = mysql_query("SELECT users.id FROM users WHERE name='$username'");
$id = mysql_fetch_assoc($id);
mysql_query("INSERT INTO `shouts` (`id`, `user`, `text`, `datetime`) VALUES (NULL, '". $id['id']."', '$text', '$datetime');");

虽然这是一个坏主意™,但您应该真正考虑使用PDO。这真的没那么难。它将为您提供准备 SQL 语句的能力,让您知道自己不会成为 SQL 注入的受害者,从而真正能够在晚上更轻松地入睡。无论您自己是否已经是受害者,您拥有的代码充其量也是模棱两可的。

于 2012-07-24T19:30:00.107 回答
0

尝试$id = addslashes($id);或任何其他编码 sql 字符串的方法

于 2012-07-24T19:27:09.857 回答
0

$id

将包含您需要获取 id 并将其放入变量的结果。查看 mysql_fetch_row 函数,我认为这会让你得到你想要的。mysql_fetch_row 语法

于 2012-07-24T19:27:59.840 回答
0

mysql_query 从不返回普通变量,只返回结果资源。尝试 mysql_fetch_assoc 从选择查询中获取数据。此外,不推荐使用 MySQL php 扩展,建议您迁移到 MySQLi 或 PDO。

于 2012-07-24T19:28:36.253 回答
0

这应该工作

   $sql = mysql_query("SELECT users.id FROM users WHERE name='$username'");
    $id = mysql_fetch_array($sql)['id'];
于 2012-07-24T19:30:35.660 回答