[英]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.