SQL插入数组中的值


SQL Insert value from array

所以我正在编写一些代码,将一段文本和一个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数据。如何将数据转换为整数?

来自手册:

返回的结果资源应该传递给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注入的受害者的情况下,晚上睡得更安稳。无论你自己是否已经是受害者,你所拥有的代码充其量都是模棱两可的。

$id

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

mysql_query从不返回正常变量,只返回结果资源。请尝试mysql_fetch_assoc从select查询中获取数据。此外,MySQL php扩展已被弃用,建议您改用MySQLi或PDO。

这应该能在中工作

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

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