gpt4 book ai didi

PHP 和 MYSQL - (mysqli_num_rows) 始终等于 0

转载 作者:行者123 更新时间:2023-11-29 10:57:37 25 4
gpt4 key购买 nike

我总是收到消息“数据库中不存在通知的诉讼。”

但是,即使我输入数据库中存在的西装号码,它仍然会提供相同的信息。如果我从脚本中删除这部分,则最终消息“Update OK”会出现,就像发生了数据库更新一样,但是当我检查数据库时,没有任何变化。

我想知道与数据库的交互是否没有发生,由于某种原因我不知道它是什么。

表格是这样的:

<html>

<style>

::-webkit-input-placeholder { color:#CDCDCD; }
input:-moz-placeholder { color:#CDCDCD; }
textarea:-moz-placeholder { color:#CDCDCD; }

</style>


<form name="saque" action="https://equadsaude.000webhostapp.com/bancodados_atualizar.php" method="POST">

<table>

<tr>
<td>Processo</td> </tr>

<tr>
<td><input name="n1" placeholder="somente algarismos"></td>
</tr>

<tr>
<td>Valor total sacado</td> </tr>

<tr>
<td><input name="n4" placeholder="00000.00"></td>
</tr>

<tr>
<td>Observações e Data </td> </tr>

<tr>
<td><input type="text" name="n3" ></td>
</tr>

<tr>
<td col span="3"><input type="submit" name="submit" value="Atualizar"></td>
</tr>
</table>
</form>
</html>

存档 .php 是这样的:

<?php

$conectar = new mysqli("localhost","id1019345_dados_zzzz","xxxx", "id1019345_sobras") or die(mysqli_error());
$processo = $_POST[ 'n1' ] ;
$valor_sacado = $_POST[ 'n4' ] ;
$observacoes = $_POST[ 'n3' ] ;

//testind POST in DB
$teste = mysqli_query($conectar, "SELECT 'id' FROM 'Tab_Index' WHERE 'Processo' = '$processo' ");
while (mysqli_num_rows($conectar, $teste) == 0)
{
echo "<p>Suit informed doesn't exist in DB.</p>"; exit(mysqli_error());
}


//subtract
$sql_seleciona = mysqli_query($conectar, "SELECT 'Valor_sobra' FROM 'Tab_Index' WHERE 'Processo' = '$processo' ");
while ($query_row = mysqli_fetch_assoc($conectar, $sql_seleciona))
{
foreach($query_row as $key => $value)
{
$resultado = $value-$valor_sacado;
}
}

//adding observations
$sql_seleciona2 = mysqli_query ($conectar, "SELECT 'Observacoes' FROM 'Tab_Index' WHERE 'Processo' = '$processo' ");
while ($query_row2 = mysqli_fetch_assoc($conectar, $sql_seleciona2))
{
foreach($query_row2 as $key => $value)
{
$resultado2 = $query2."/". $observacoes;
}

}

//Update DB
$sql_alterar = mysqli_query($conectar, "UPDATE 'Tab_Index' SET 'Valor_sobra' = '$resultado1', 'Observacoes' = '$resultado2' WHERE 'Processo' = '$processo' ");

if ( isset ($sql_alterar) )
{
print "<h3> Update OK </h4>\n" ;
}
else
{
print "<h3> Error updating </h4>\n" ;
}


?>

DB 有 4 列:id、Processo (BIGINT)、Valor_sobra (DECIMAL 7,2)、Observacoes (VARCHAR)。主机:localhost 用户名:id1019345_dados_zzzz SENHA:xxxx 数据库:id1019345_sobras

最佳答案

您的 SQL 似乎无效。如果您检查 mysqli_error() 的值,您可能会看到一些东西。

列名或表名不应包含引号。 (您可以使用反引号。)

SELECT 'id' FROM 'Tab_Index' WHERE 'Processo' = '$processo' 

完全无效。

SELECT 'id' FROM Tab_Index WHERE 'Processo' = '$processo' 

将选择文字字符串“id”而不是 id 列

SELECT id FROM Tab_Index WHERE Processo = '$processo' 

这就是你想要的。

另请参阅我上面关于 SQL 注入(inject)漏洞的注释和这个 SO 答案:

How to create a secure mysql prepared statement in php?

关于PHP 和 MYSQL - (mysqli_num_rows) 始终等于 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42795162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com