从数据库获取可变数据并在PHP中显示

时间:2013-04-05 13:41:22

标签: php javascript sql

我想从php中的输入框数据中传递值,并且它的显示但是php sql无法识别

<form name="form1"/>
<input type="text" name="code1" value="D50" size="7" maxlength="10" onblur="chkidpro(this.value,'provider1');" />
<input type="text" name="code2" value="" size="7" maxlength="10"/>
<form/>

<script type="text/javascript">

var jvalue = form1.code1.value;

<?php $abc = "<script>document.write(jvalue)</script>"?> 

</script>

<?PHP 
$con = mysql_connect("localhost","abc_one","pass");
mysql_select_db("abc_one", $con);

echo $abc;// ITS PRINT AS D50

$c = 'D50';

//$c = $abc;

$result2 = mysql_query("SELECT * FROM tblmycode where code='$c';");

$tab = mysql_fetch_array($result2);

if($result2 === false)

{
die("Database Error");
}

if(mysql_num_rows($result2) == 0)

{
die("No Record Found");
}

echo $ abc;打印AS D50

如果我更换$ c = $ abc;没有找到记录

如果我更换$ c ='D50';记录可用

2 个答案:

答案 0 :(得分:3)

您显示的代码正在SERVER端工作,所以:

 <?php $abc = "<script>document.write(jvalue)</script>"?> 

$abc设置为"<script>document.write(jvalue)</script>"

您在那里编写的javaScript将在CLIENT端(浏览器)上运行。不要混合它们......

好的,澄清发生了什么:

此文本在您的服务器中的php文件中,因此在调用时:

Line                                       Action on Server
<form name="form1"/>                       //->sent to client
<input type="text" name="code1" value="D50"//->sent to client
<input type="text" name="code2" value=""   //->sent to client
<form/>                                    //->sent to client 
<script type="text/javascript">            //->sent to client
var jvalue = form1.code1.value;            //->sent to client(will run on client) 

<?php                                      //->php takes control on server

 $abc = "<script>document.write(jvalue)</script>"; //php runs this on server 
 //php sets $abc to "<script>document.write(jvalue)</script>" on server...
 //php does not process javascript, php sees it as text...

?>                                         //->ends php control

</script>                                  //->sent to client

<?PHP                                      //->php takes control on server again

$con = mysql_connect("localhost","abc_one","pass"); // php runs this on server
mysql_select_db("abc_one", $con);                   // php runs this on server

echo $abc;                                          // php echoes $abc

表示包含

的行
<script>document.write(jvalue)</script> 

发送给客户。

将其写入您的客户文档......

将在客户端计算机上评估,而不是在服务器上评估。

它将在不久的将来发生,还没有......

为什么在浏览器上看到D50?让我们来看看未来:

那么当 CLIENT (浏览器)解析javascripts时会发生什么?

浏览器将执行

var jvalue = form1.code1.value;

将jvalue设置为D50,当然还有浏览器遇到

<script>document.write(jvalue)</script>

它将运行它并显示jvalue ON THE CLIENT 的值 D50 ..

所有这些都将在客户端计算机上发生,而不是在服务器上。

所以这将在不久的将来发生,还没有......

现在回到你的php文件

//$c = 'D50';    // lets ignore this   

$c = $abc;                                    // php runs this on server. 

// guess what now $c is '<script>document.write(jvalue)</script>'     

// then php tries to run this:

$result2 = mysql_query("SELECT * FROM tblmycode where code='$c';");

现在您的查询变得非常有趣:

SELECT * FROM tblmycode where code='<script>document.write(jvalue)</script>';

我希望你现在明白发生了什么......

PS:不推荐使用mysql接口使用mysqli或PDO ...

答案 1 :(得分:1)

您需要了解后端和前端的工作原理。

您的PHP首先生成HTML服务器端,然后将其发送给用户,然后用户在浏览器中运行它并执行Javascript。

所以当你这样写:

$abc = "<script>document.write(jvalue)</script>"

$abc 是您JavaScript的结果。它实际上是一个包含<script>document.write(jvalue)</script>的字符串。

所以你的方法是完全错误的 - 你不能将这样的变量传递给PHP!

您需要做的是将字段值发送到服务器,以便脚本可以处理它们。

阅读一些教程,例如this one