-6

我想从 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");
}

回声 $abc; 打印 AS D50

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

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

4

2 回答 2

3

您显示的代码在服务器端工作,因此:

 <?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(浏览器)解析 javascript 时会发生什么?

浏览器将执行

var jvalue = form1.code1.value;

行并将 jvalue 设置为 D50,当然当浏览器遇到

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

它将运行它并在客户端上显示 jvalue 的值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...

于 2013-04-05T13:54:18.150 回答
1

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

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

所以当你写这个时:

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

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

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

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

阅读一些类似这样的教程。

于 2013-04-05T13:52:25.520 回答