mysqli 存储 php 变量而不是值

Posted

技术标签:

【中文标题】mysqli 存储 php 变量而不是值【英文标题】:mysqli stores php variable not value 【发布时间】:2012-09-25 23:12:09 【问题描述】:

这让我发疯了。我正在使用 jQuery 图像上传和裁剪 http://www.webmotionuk.co.uk/php-jquery-image-upload-and-crop/

我正在使用此处建议的修改版本将文件位置存储在 mysql 数据库中。 mod是我在一个表上使用INSERT,它工作得很好,除了一件事,'所有者'变量$id被存储为$id而不是$id的值。如果 $id 在每个 $_POST 上,我可以回显该值,所以我知道它就在那里。

我很确定我的语法是正确的,但我不明白为什么会这样。

    $cropped = resizeThumbnailImage($thumb_image_location, $large_image_location,$w,$h,$x1,$y1,$scale);
    //connect to the database
    include 'config.php';
    // check connection
    if (mysqli_connect_errno()) 
        exit('Connect failed: '. mysqli_connect_error());
     
    $sql = "INSERT INTO `photos` (`id`,`owner`,`url`) VALUES ('id','".$id."','".$thumb_image_location."')";
    // Performs the $sql query on the server to insert the values
    if ($conn->query($sql) === TRUE) 
        $conn->close();
//Reload the page again to view the thumbnail
header("location:".$_SERVER["PHP_SELF"]);
exit();

第一行是 246,最后 3 行是原始的 247-250。

感谢您提供的任何帮助。

好的,我不知道这是我的脑子放屁还是 PHP 的问题,或者两者兼而有之。我从每个页面的标题中的 _SESSION 变量中分配了 $id 并且(忘记了)我将 $id 作为 _POST 数据(相同的值)传递。一旦我切断 _POST 数据传递并拉出 _SESSION 变量,它就可以正常工作。但是多次分配一个变量应该不是问题,不是吗?

【问题讨论】:

数据库中显示的字符串是“$id”还是只是“id”?如果它是“id”,这可能意味着 $id 没有被设置并且 PHP 正在回退到将其解释为字符串。如果它是“$id”,我唯一能想到的就是在单引号内有 $id(而不是嵌套在双引号内),而这似乎不会在您的代码中发生。 如果在 $sql = 行之前回显 $id 会得到什么? 10 月,所有者字段填充了 $id。 提姆,echo显示$id的值,我把它echo在每个页面的顶部进行调试。 您是否尝试过在 $sql = 语句之前回显它以验证它没有在页面顶部之后的某个地方搞砸? 【参考方案1】:

查询行需要是这样的:

$sql = "INSERT INTO `photos` (`id`,`owner`,`url`) VALUES ('id','$id','$thumb_image_location')";

您的语法也可以正常工作,如 here 所见

这就是我的语法的工作原理,here

注意:两者的工作原理相同,因此仍在尝试找出 OP 代码中的问题。

【讨论】:

这样存储 $id 而不是值,但 url 仍然有效。 这看起来应该完全等同于 OP 正在使用的查询,尽管它确实需要更少令人眼花缭乱的报价跟踪(除非我在说计数时失败了)。 是的,我只是先测试了我的,然后是 OP 的 :),因此将两者都放在那里。 @Neilaka.Duckie,我测试了两种语法,都可以正常工作,如我的回答所示。

以上是关于mysqli 存储 php 变量而不是值的主要内容,如果未能解决你的问题,请参考以下文章

PHP Mysqli'动态地'说应该使用啥连接(变量)

如何将数组存储到php中的会话变量中

为啥我们不能直接从函数返回一个 mysqli 对象?对象必须先存储在变量中吗?

JavaScript:闭包是不是可以通过值而不是像 PHP 中的引用来访问封闭范围内的变量?

PHP::mySqli 不插入带有变量的新行

mysqli 用 php 中的备用变量覆盖空帖子