Space之后不允许使用字符。使用PHP插入Mysql

时间:2011-01-11 03:42:09

标签: php mysql select

好的,我认为这很容易,但我不知道(我是PHP和MySQL的新手)。

我有一个选择从数据库中的表中获取数据。我只是采取用户选择的任何选项,并将其放入一个单独的表与php mysql插入语句。

但我遇到了问题。当我点击提交时,除了在第一个空格后没有提交空格的任何选项时,一切都会正确提交。例如,如果选项为COMPUTER REPAIR,那么将发送的所有内容都是COMPUTER。如果需要,我会发布代码,任何帮助将不胜感激。谢谢!

好的,这是我的选择代码:

<?php
  include("./config.php");
  $query="SELECT id,name FROM category_names ORDER BY name";
  $result = mysql_query ($query);
  echo"<div style='overflow:auto;width:100%'><label>Categories (Pick three that describe your business)</label><br/><select name='select1'><option value='0'>Please Select A Category</option>";
  // printing the list box select command
  while($catinfo=mysql_fetch_array($result)){//Array or records stored in $nt


  echo "<option>$catinfo[name]</option><br/>

 ";

  }

echo"</select></div>";

  ?>

这是我的插入代码(只是为了让你知道它的所有内容不仅仅是选择!)

?php
    require("./config.php");
    $companyname = mysql_real_escape_string(addslashes(trim($_REQUEST['name'])));
    $phone = mysql_real_escape_string(addslashes($_REQUEST['phone']));
    $zipcode = mysql_real_escape_string(addslashes($_REQUEST['zipcode']));
    $city = mysql_real_escape_string(addslashes($_REQUEST['city']));
    $description = mysql_real_escape_string(addslashes($_REQUEST['description']));
    $website = mysql_real_escape_string(addslashes($_REQUEST['website']));
    $address = mysql_real_escape_string(addslashes($_REQUEST['address']));
    $other = mysql_real_escape_string(addslashes($_REQUEST['other']));
    $payment = mysql_real_escape_string(addslashes($_REQUEST['payment']));
    $products = mysql_real_escape_string(addslashes($_REQUEST['products']));
    $email = mysql_real_escape_string(addslashes($_REQUEST['email']));
    $select1 = mysql_real_escape_string(addslashes($_REQUEST['select1']));
    $select2 = mysql_real_escape_string(addslashes($_REQUEST['select2']));
    $select3 = mysql_real_escape_string(addslashes($_REQUEST['select3']));
    $save=$_POST['save'];
    if(!empty($save)){

    $sql="INSERT INTO gj (name, phone, city, zipcode, description, dateadded, website, address1, other2, payment_options, Products, email,cat1,cat2,cat3)
    VALUES
    ('$companyname','$phone','$city','$zipcode','$description',curdate(),'$website','$address','$other','$payment','$products','$email','$select1','$select2','$select3')";

    if (!mysql_query($sql,$link))
      {
      die('Error: ' . mysql_error());
      }
    echo "<br/><h2><font color='green' style='font-size:15px'>1 business         added</font></h2>";

    mysql_close($link);
}

    ?>

2 个答案:

答案 0 :(得分:2)

value="$catinfo[name]"放在<option>代码上,使它们看起来像这样:

echo "<option value=\"".htmlspecialchars($catinfo['name'])."\">".$catinfo['name']."</option>";

由于你已经省略了它们,它默认使用<option>标签之间的任何内容,因为它们周围没有引号,所以它将空格确定为值的结尾。通过将要插入的实际值放在value属性中的数据库中,您明确地告诉它使用引号之间的完整短语。

另外,请移除<br/>,因为您不需要在<select>元素中放置休息符。

答案 1 :(得分:0)

这是人们遇到的常见错误。为了访问存储在数据库中的数据,请遵循以下格式:

echo "<option>'".$catinfo[name]."'</option><br/>";

如果您希望将值存储在选项中,请使用以下格式:

echo "<option value='".$catinfo[name]."'>'".$catinfo[name]."'</option><br/>";

它将按原样显示数据库中的数据。 我希望它有所帮助!