首页
学习
活动
专区
圈层
工具
发布

列为空
EN

Stack Overflow用户
提问于 2014-04-02 05:24:36
回答 4查看 412关注 0票数 0

我有php页面,您可以输入一个数字,然后单击submit按钮,它应该更新表中的列。我遇到的问题是,它不是在更新值,而是只留下一个空字段。

这句话好像出了点问题。

代码语言:javascript
复制
$update = mysql_query("UPDATE sip SET callerid = '$new' WHERE name = $trial");

如果我只是将$new更改为一个数字,它就能正常工作。如果我回$new,我会得到一个号码。此外,$trial位可以正常工作。

下面是我的完整代码。

代码语言:javascript
复制
   <!DOCTYPE html>
<html>
<head>
  <title>Test</title>
<link href="/../site.css" rel="stylesheet">
</head>

<body>
<? include("../header.php") ?>  
<div id="main">


<?php
session_start();
$trial = $_SESSION['random'];
echo "Random: ".$trial;

if(empty($_SESSION['random'])) {
header("Location:/site/home.php");
}

   echo "<br />";
?>

    <form action="customer_details.php" method="post">
    Number: <input type="number" name="phone" id="phone" maxlength="4" min="1000" max="9999" />
     <br /><br />
    <input type="Submit" />

</form>


<?php
$link = mysql_connect('localhost', 'root', '');
mysql_select_db('test' , $link) or die("Unable to select database: asterisk" . mysql_error());


if(isset($_POST['phone']))
{

$phone = $_POST['phone'];



$result = mysql_query("SELECT * FROM table where number = '$phone'");
while ($row = mysql_fetch_array($result)) 
{

$data = $row['callerid'];
}

echo $phone;

if($phone = $data)
{

print '<script type="text/javascript">'; 
print 'alert("Number is already in database")'; 
print '</script>';

}
else {
$new = $phone;
$update = mysql_query("UPDATE sip SET callerid = '$new' WHERE name = $trial");

if(! $update )
{
  die('Could not update data: ' . mysql_error());
}
else
{
print '<script type="text/javascript">'; 
print 'alert("New Data added");'; 
print 'window.location.href = "../home.php";';
print '</script>';
}

}

}
?>

<? include("../footer.php") ?> 
</div>
</body>

</html>
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-04-02 05:51:16

您将$phone设置为$data,而不是比较它们的值。

代码语言:javascript
复制
if($phone = $data)
{

print '<script type="text/javascript">'; 
print 'alert("Number is already in database")'; 
print '</script>';

}

$phone = $data更改为$phone == $data。现在,这个条件块将始终执行,而else (您的更新设置为运行)将不会执行。

侧注:如果变量的值包含单引号,并且使用单引号来设置查询中的值(正如您应该做的那样),那么这不仅是一个注入漏洞的问题,而且它无法正确更新。

票数 1
EN

Stack Overflow用户

发布于 2014-04-02 05:27:06

您应该使用如下单引号:

代码语言:javascript
复制
$update = mysql_query("UPDATE sip SET callerid = '$new' WHERE name = '$trial'");
票数 0
EN

Stack Overflow用户

发布于 2014-04-02 05:29:33

对于不是整数的变量,您必须使用单引号,而不需要对整数使用单引号。

代码语言:javascript
复制
$update = mysql_query("UPDATE sip SET callerid ='".$new."' WHERE name ='".$trial."'");

并改变这一行

代码语言:javascript
复制
if($phone = $data)  // here you are assigning the value of $data to $phone

代码语言:javascript
复制
if($phone == $data) // you have to compare it using ==
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22802244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档