SQL从数组中插入值

时间:2012-07-24 19:24:02

标签: php sql

所以我正在研究一些将一段文本和一个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数据。如何将该数据转换为整数?

5 个答案:

答案 0 :(得分:3)

来自manual

  

返回的结果资源应该传递给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注入的受害者。无论你自己是否已成为受害者,你所拥有的代码最多都是模棱两可的。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

  

$ ID

将包含获取id所需的结果并将其放入变量中。查看mysql_fetch_row函数,我认为这将为您提供所需的功能。 mysql_fetch_row syntax

答案 3 :(得分:0)

mysql_query永远不会返回正常变量,只返回结果资源。尝试使用mysql_fetch_assoc从select查询中获取数据。此外,不推荐使用MySQL php扩展,我们鼓励您转移到MySQLi或PDO。

答案 4 :(得分:0)

这应该有效

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