我的代码出了问题。插入代码不起作用。谁能告诉我出了什么问题?当用户单击按钮时,代码应该将人fbid name
和email
插入我的数据库,但我的数据库中没有任何内容。
<?php
header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"');
include_once 'mysqli.connect.php';
include_once 'fbmain.php';
if($me){
$fbid= $facebook->api('/me');
$fbme = $fbid['id'];
$fbName = $fbid['name'] ;
$fbEmail = $fbid['email'];
}
if (isset($_POST['submit']) ){
mysqli_query("INSERT members SET fbId='$fbme',name='$fbName', email ='$fbEmail'" );
}
?>
<html>
<form action="" method="post">
<input type="image" src="../images/buy.png" name="submit" width="60"height="30" />
</form>
</html>
答案 0 :(得分:1)
mysqli_query("INSERT members SET fbId='$fbme',name='$fbName', email ='$fbEmail'" ); is wrong, you need:
'INSERT INTO members ( 'id', 'name' .... ) VALUES ( [value1], [value2] )'
答案 1 :(得分:1)
如果某些内容不起作用(正如预期的那样),您应该检查错误以找出正在发生的事情。
话虽如此:
mysqli_query需要2个必需参数,link
和query
,但您只提供了query
。
另一件事:即使您已经这样做,您的查询仍然无效。它应该是:
"INSERT INTO members (fbId, name, email) values ('$fbme', '$fbName', '$fbEmail')"
另请注意,您检查变量$me
(正如您所声称的那样来自FaceBook)。所以我的问题是当FB失败或者你尝试提交表格时会发生什么?即使所需的信息不存在,您仍将尝试运行查询。
所以我要做的就是下面的事情:
$link = mysqli_connect("localhost", "my_user", "my_password", "dbname");
if($me){
$fbid= $facebook->api('/me');
$fbme = $fbid['id'];
$fbName = $fbid['name'] ;
$fbEmail = $fbid['email'];
if (isset($_POST['submit'])) {
mysqli_query($link, "INSERT INTO members (fbId, name, email) values ('$fbme', '$fbName', '$fbEmail')") or die(mysql_error());
}
}
作为替代方案,您也可以使用预准备语句。使用预准备语句的一个好处是它可以防止大多数SQLinjection漏洞。使用预准备语句看起来像这样:
/* Prepare a statement */
$stmt = mysqli->prepare("INSERT INTO table (col1, col2 ...) VALUES (?, ? ...) WHERE uID=?");
/* Bind parameters */
$stmt->bind_param('is', $a, $b ...); // <-- i=int, s=string, etc. etc.
/* Set parameters */
$a = $fbMe;
$b = $fbName;
... // <-- etc. etc.
/* Execute your statement */
$stmt->execute();
答案 2 :(得分:0)
正如之前的用户声明您的插入查询不正确...您可以使用
mysql_error()
打印确切的错误消息以供参考