php 单引号和双引号 $_FILES

Posted

技术标签:

【中文标题】php 单引号和双引号 $_FILES【英文标题】:php single vs. double quotes $_FILES 【发布时间】:2017-04-30 18:57:09 【问题描述】:

我是 php 新手,现在正在学习我的第一门课程。对于我的生活,我无法弄清楚为什么只有 $screenshot = $_FILES["screenshot"]["name"] 需要双引号。我最初有单引号,但它不起作用。我随机决定尝试双引号并开始工作......有人可以告诉我为什么吗?

<?php
  // Define the upload path and maximum file size constants
  define('GW_UPLOADPATH', 'images/');

  if (isset($_POST['submit'])) 
    // Grab the score data from the POST
    $name = $_POST['name'];
    $score = $_POST['score'];
    $screenshot = $_FILES["screenshot"]["name"];

    if (!empty($name) && !empty($score)) 
      // Move the file to the targe upload folder
      $target = GW_UPLOADPATH . $screenshot;
      // Connect to the database
      $dbc = mysqli_connect('localhost', 'root', 'Bandito8', 'gwdb')
        or die('Unable to connect to databse');

      // Write the data to the database
      $query = "INSERT INTO guitarwars VALUES (0, NOW(), '$name', '$score', '$screenshot')";
      mysqli_query($dbc, $query)
        or die('Unable to complete query');

      // Confirm success with the user
      echo '<p>Thanks for adding your new high score!</p>';
      echo '<p><strong>Name:</strong> ' . $name . '<br>';
      echo '<strong>Score:</strong> ' . $score . '</p>';
      echo '<img src="' . GW_UPLOADPATH . $screenshot . '" ></p>';
      echo '<p><a href="index.php">&lt;&lt; Back to high scores</a></p>';

      // Clear the score data to clear the form
      $name = "";
      $score = "";
      $screenshot = "";

      mysqli_close($dbc);
    
    else 
      echo '<p class="error">Please enter all of the information to add your high score.</p>';
    
  
?>

【问题讨论】:

What is the difference between single-quoted and double-quoted strings in PHP?的可能重复 $screenshot = $_FILES["screenshot"]["name"]$screenshot = $_FILES['screenshot']['name'] 应该以完全相同的方式工作;你一定也改变了其他东西 它应该可以使用单引号,我相信一定有一些错误,尝试var_dump($_FILES['screenshot']['error'])并检查错误详细信息here 在使用 var_dump 进行了大量试验和错误更改后,我以某种方式使用单引号 - 谢谢 Mahesh! 【参考方案1】:

php 解析器尝试将双引号中的字符串解释为变量,而单引号中的字符串被解释为字面字符串...

php 解释正在搜索变量,由于没有找到任何变量,因此需要更多的 php 时间...

echo $_FILES["upload"]["size"];

php 解释正在搜索字符串,由于它没有找到任何变量,因此花费更少的 php 时间......

echo $_FILES['upload']['size'];

另一个例子:

此示例将 $hidden 视为变量并且可以正常工作...

echo "the red fox was $hidden to the hunter";

此示例将 $hidden 视为字符串,无法按预期工作...

echo 'the red fox was $hidden to the hunter';

希望这会有所帮助!

【讨论】:

以上是关于php 单引号和双引号 $_FILES的主要内容,如果未能解决你的问题,请参考以下文章

php中单引号和双引号的区别,哪个速度更快?为啥?

php 的单引号和双引号的用法

PHP中单引号与双引号的区别分析

PHP单引号和双引号区别

php单引号中可以包含双引号吗

Shell 中单引号和双引号区别