2015-12-15 106 views
0

我开始变得怒不可遏这里PHP的MySQL的where子句不读变量

mysql_query不承认我的变量$d1甚至我试图将其重命名

这里是代码..

HTML :

<form action ="manageVessel.php" method ="POST"> 
    <select onchange ="this.form.submit();" class ="form-control" name ="ViewPositionCertificates"> 
     <option>Choose a Position </option>              
     <?php 
     $ViewPCertificates = mysql_query("SELECT * FROM table_cmsjob") or die("error" . mysql_error()); 
     while ($rwViewPCertificates = mysql_fetch_array($ViewPCertificates)) { 
      ?> 
      <option value =" <?php echo $rwViewPCertificates['jobName']; ?> "> <?php echo $rwViewPCertificates['jobName']; ?></option> 
     <?php } ?> 

     </select> 
</form> 

PHP:

<?php if (isset($_POST['ViewPositionCertificates'])) { ?> 
     <table class = "table table-bordered"> 
      <tr class ="bg-primary"> 
       <td> List of Certificates </td> 
      </tr> 
      <?php 
      $d1 = $_POST['ViewPositionCertificates']; 
      echo $_POST['ViewPositionCertificates']; 
      $ViewCertificatesFP = mysql_query("SELECT * FROM table_cmsjobassigning WHERE jobName = '$d1' ") or die("error" . mysql_error()); 

      while ($rwViewCertificatesFP = mysql_fetch_array($ViewCertificatesFP)) { 

       echo "<tr>"; 
       echo "<td>" . $rwViewCertificatesFP['Certificate'] . "</td>"; 
       echo "</tr>"; 
      } 
      ?> 

     </table> 




    <?php } ?> 

MYSQL当我用例如

mysql_query("SELECT * FROM table_cmsjobassigning WHERE jobName = 'MASTER' ") or die("error" . mysql_error()); 

字符串WHERE子句工作正常,但是当我使用一个变量分配$_POST['ViewPositionCertificates']一个变量MYSQL WHERE子句不阅读任何帮助吗?

+0

'$ ViewCertificatesFP = mysql_query(“SELECT * FROM table_cmsjobassigning WHERE jobName ='{$ d1}'”)或die(“error”)。 mysql_error());' 使用这个查询 和一对菜鸟,请优先于mysql的mysqli –

+0

由于没有人说,我会说。请**不要**使用'mysql_ *'函数,因为它们已被弃用,并且在新发布的PHP 7.0中使用[mysqli](http://php.net/manual/en/book.mysqli.php)或改为[PDO](http://php.net/manual/en/book.pdo.php)。另外当处理用户输入使用准备语句,否则您的查询是打开的[SQL注入](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) – BRoebie

回答

3
<option value ="<?php echo $rwViewPCertificates['jobName']; ?>"> <?php echo $rwViewPCertificates['jobName']; ?></option> // remove xtra spaces from here...... 

删除空格从value属性

+0

感谢没有注意到从值属性的空白 –

0
<?php if (isset($_POST['ViewPositionCertificates'])) { ?> 
    <table class = "table table-bordered"> 
     <tr class ="bg-primary"> 
      <td> List of Certificates </td> 
     </tr> 
     <?php 
     $d1 = $_POST['ViewPositionCertificates']; 
     echo $_POST['ViewPositionCertificates']; 
     $ViewCertificatesFP = mysql_query("SELECT * FROM table_cmsjobassigning WHERE jobName = '".$d1."' ") or die("error" . mysql_error()); 

     while ($rwViewCertificatesFP = mysql_fetch_array($ViewCertificatesFP)) { 

      echo "<tr>"; 
      echo "<td>" . $rwViewCertificatesFP['Certificate'] . "</td>"; 
      echo "</tr>"; 
     } 
     ?> 
    </table> 
<?php } ?> 

选择查询语法的更改使用单引号。

+0

谢谢你的回应:)但我已经尝试,迄今不会工作?我也尝试重新启动我的Apache和MySQL,但它仍然不起作用 –

+0

尝试打印查询。 –

+0

你不知道如何投票吗?或者你只需​​要一个答案。 –

-1

试图改变自己的查询方法,它可以帮助...

$ViewCertificatesFP = mysql_query("SELECT * FROM table_cmsjobassigning WHERE jobName = '".$d1."' ") or die("error" . mysql_error()); 
0

试试这个:

mysql_query("SELECT * FROM table_cmsjobassigning WHERE jobName = ".$_POST['ViewPositionCertificates']) 
0

你不能写单引号内的变量,如果你写它,然后PHP会认为它是字符串。 所以您的查询就会
$ViewCertificatesFP = mysql_query("SELECT * FROM table_cmsjobassigning WHERE jobName = $d1 ") or die("error" . mysql_error());

如需更多帮助,请在PHP读取变量插值

+0

感谢您的答复我已经尝试过,但我不断收到错误未知列'MASTER'在'where子句'master是我的数据库中列的jobName行之一 –

+0

好了,那么请确认'MASTER'是列出现在您的MySQL表 – Sanjay

+0

请将$ d1替换为''。$ d1。'',我认为它会解决您的问题 – Sanjay

1

尝试这样的..

$ViewCertificatesFP = mysql_query("SELECT * FROM table_cmsjobassigning WHERE jobName = '".mysql_real_escape_string(trim($d1))."' ") or die("error" . mysql_error()); 

$ViewCertificatesFP = mysql_query("SELECT * FROM table_cmsjobassigning WHERE jobName = '".addslashes(trim($d1))."' ") or die("error" . mysql_error()); 
+0

我认为“$ d1”变量的值有一些特殊字符。尝试使用与mysql_real_escape_string()或addslashes() –