繁体   English   中英

SQL从数组插入值

[英]SQL Insert value from array

因此,我正在研究一些将一个文本和一个id插入表中的代码。 我向代码发送文本和用户名。 我要使用用户名,然后从用户表中选择与其对应的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');");

尽管这是一个Bad Idea™,但您应该真正考虑使用PDO 其实并不难。 它将为您提供准备SQL语句的能力,从而使您知道自己不会成为SQL注入的受害者,从而真正能够在晚上轻松入睡。 无论您是否已经成为受害者,您拥有的代码充其量都是模棱两可的。

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

$ id

要包含您的结果,您需要获取ID并将其放入变量中。 签出mysql_fetch_row函数,我认为这将为您提供所需的东西。 mysql_fetch_row语法

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

这应该工作

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM