【问题标题】:mysqli inserts typed values but not variablesmysqli 插入类型值但不插入变量
【发布时间】:2016-02-09 21:54:06
【问题描述】:

我试图让以下代码工作。这是一个 ajax 调用,我在其中发送一个 json 编码的字符串“数据”:

<?php
require_once('connect.php'); // get values for mysqli-connect
        $arr1 = json_decode($_GET['data']);
        $arr = array_values($arr1);

if ($GLOBALS['TSFE']->loginUser) {
    $mysqli = new mysqli($server,$user,$pw,$db);
    if ($mysqli->connect_error) {
    die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
    }
    //values to be inserted in database table
    $var1 = "Hello World";
    $var2 = 45;
    $var3 = "an encoded array";
/*
    $var1 = $arr[1];
    $var2 = $arr[2];
    $var3 = json_encode($arr[3]);
*/
    $insert_row = $mysqli->query("INSERT INTO table_testing 
        (event, pid, myarray) VALUES ('$var1', '$var2', '$var3')");

    if($insert_row){
    print 'Success! ID of last inserted record is : ' .$mysqli->insert_id .'<br />';
    }else{
    die('Error : ('. $mysqli->errno .') '. $mysqli->error);
    }
 } else {
    echo "User is NOT logged in!\n";
}   
?>

我的问题是这段代码有效!它适用于存储在 $var1-3 中的三个值。它们保存在正确的表中。

但是-如果我尝试将注释掉的三个值从 $arr[1-3] 存储到 $var[1-3] 它不起作用?保存的三个值是''(空)、'0'和'NULL'。 我试图在声明 $arr 后立即将这些行放入:

echo $arr[1]."\n";
echo $arr[2]."\n";
echo json_encode($arr[3])."\n";  

在控制台中打印了正确的值,因此它们是有效的并且存在。它是一个字符串、一个整数和一个数组。 什么是我忽略或不理解的?

【问题讨论】:

    标签: variables mysqli insert


    【解决方案1】:

    PHP arrays start 的索引是从 0 开始的。

    试试这个代码:

    echo $arr[0] . "\n";
    echo $arr[1] . "\n";
    echo json_encode($arr[2]) . "\n";  
    

    【讨论】:

    • 我知道它是从 0 开始的。 $arr[0] 中的值是一个字符串,但在表中它被定义为一个 int。在修复之前,我不使用第一个值。现在我只是在测试。还是谢谢你。
    猜你喜欢
    • 1970-01-01
    • 2015-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多