我正试图使用从上一个select查询返回的关联,将其插入到php中的sql表中。但是编译器给了我一个语法错误'unexpected$eof'。
基本上,我就是这么做的:
$query2 = "SELECT * FROM users WHERE user_name='$user.username'";
$result2 = mysqli_query($db, $query2);
$new_user = mysqli_fetch_assoc($result2);
$query3 = "INSERT INTO new_table (new_user_id) VALUES('$new_user['user_id']');";
mysqli_query($db, $query3);
查询3是给我错误的那个。我以前用fetch关联引用过这样的变量。我对php非常陌生,但是通过关联获取不就是创建一个字典吗?有什么想法吗?
谢谢,
2条答案
按热度按时间91zkwejq1#
问题似乎是代码中的单引号:
如果要在查询外部设置这样的变量,它应该可以工作:
我还建议您将查询参数化。
lqfhib0f2#
这个
EOF
error是end of file
这意味着php认为你的脚本不会在你认为的地方结束。这通常是由控制块未关闭引起的,例如。{...code ?>
没有关闭}
.你还有其他一些问题需要解决。不应该在查询中使用变量。不能在字符串中使用带引号的索引。您不需要执行两个查询就可以完成您要做的事情。
应该是工作。把它和
prepare
,bind_param
,和execute
你的代码会更安全。http://php.net/manual/en/mysqli.prepare.php
http://php.net/manual/en/mysqli-stmt.bind-param.php
http://php.net/manual/en/mysqli-stmt.execute.php
你也可以在这里阅读更多关于这些概念的内容,http://php.net/manual/en/mysqli.quickstart.prepared-statements.php.
如果您对sql查询的工作方式感兴趣,请参阅以下内容https://dev.mysql.com/doc/refman/8.0/en/insert-select.html.