首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP/Mysqli插入:无法通过引用传递参数2

PHP/Mysqli插入:无法通过引用传递参数2
EN

Stack Overflow用户
提问于 2015-02-17 14:23:00
回答 2查看 604关注 0票数 1

谢谢你帮我。

我正在尝试做一些简单的事情:只在数据库中插入两个内容。第一种方法效果良好:

代码语言:javascript
运行
复制
$stmt = $db->prepare("INSERT INTO sessions(date, lieu, trainer) VALUES (?,?,?)");
$stmt->bind_param("sss", $date, $location, $trainer);
$stmt->execute();
$session = $stmt->insert_id;
$stmt->close();

然后,我尝试执行另一个插入:我有一个表'users‘,它有4个列: Id、自动递增、用户名(名为'fullName')、sessionId ( int)和contactInfo ( varchar)。

下面是第二个插入的代码:

代码语言:javascript
运行
复制
//var_dump($session); returns an int
$stmt = $db->prepare("INSERT INTO users(fullName, sessionId, contactInfo) VALUES (?,?,?)");
$stmt->bind_param("sis", "$username", "$session", "$contactinfo");
$stmt->execute();
$newId = $stmt->insert_id;
$stmt->close();

从其他文章中可以看出,当您试图传递一个不是参数的参数(例如: int),但在我的例子中它是一个变量时,我会重用第一个块中的"$session“($session = $stmt->insert_id;)。

我可以这么做吗?我错过了什么?

谢谢!

编辑:删除单引号和放置双引号,但这似乎没有削减它。尝试将它们用于两个字符串,但不用于会话,但不会更改结果。

EDIT2 2:按照serjoscha的好建议,我打印了这个查询,以了解它的外观:

代码语言:javascript
运行
复制
echo "INSERT INTO users (fullName, sessionId, contactInfo) VALUES ($username,$session,$contactinfo)";

这让我觉得

代码语言:javascript
运行
复制
INSERT INTO users (fullName, sessionId, contactInfo) VALUES (Paul Honour,56,Location Liège Belgium Email ph@ph.be +329999999)

只有当我这样说的时候,查询才能起作用:

代码语言:javascript
运行
复制
INSERT INTO users (fullName, sessionId, contactInfo) VALUES ('Paul Honour',56,'Location Liège Belgium Email ph@ph.be +329999999')

你知道怎么回事吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-17 14:24:32

您的问题是单引号变量。只需删除单引号或使用双引号对双引号的内容进行部分评估/分析:

代码语言:javascript
运行
复制
$a=3;
echo '$a'; // prints: $a
echo "$a"; // prints: 3
echo $a; // prints: 3 and this is just what you need

您不需要变量的引号,所以只需删除它们:

代码语言:javascript
运行
复制
$stmt->bind_param("sis", $username, $session, $contactinfo);
票数 1
EN

Stack Overflow用户

发布于 2015-02-18 13:49:38

发现了这个问题:

它在“列日”(Liège)上失败了,这是口音的问题。我确保我有相同的编码在两边,我终于可以插入!我的代码现在看起来像是:

代码语言:javascript
运行
复制
$contactinfo = $db->real_escape_string($contactinfo);
$stmt = $db->prepare("INSERT INTO users (fullName, sessionId, contactInfo) VALUES (?,?,?)");
$stmt->bind_param("sis", $username, $session, $contactinfo);
$stmt->execute();
$userId = $stmt->insert_id;
$stmt->close();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28563566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档