无法将数据插入数据库

时间:2012-02-01 17:13:10

标签: php insert

我的代码出了问题。插入代码不起作用。谁能告诉我出了什么问题?当用户单击按钮时,代码应该将人fbid nameemail插入我的数据库,但我的数据库中没有任何内容。

<?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>

3 个答案:

答案 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个必需参数,linkquery,但您只提供了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()

打印确切的错误消息以供参考