【问题标题】:mysql_result resulting error in phpmysql_result 导致 php 错误
【发布时间】:2012-08-13 07:42:43
【问题描述】:

我只是将我的数据库从 MS-Access 转移到 mysql

我正在使用以下代码(仅部分相关代码)从 mysql 中检索数据

$con = mysql_connect("localhost","abc","abc@123");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }


  $conn= mysql_select_db('xyz', $con);
if (!$con) {
    die ('Can\'t connect to database : ' . mysql_error());
}

$sql="SELECT * FROM Inventory where Text5='y' OR Text5='Y'  ";
$rs=mysql_query($sql);
if (!$rs)
  {exit("Error connecting database,,,");}

while (mysql_fetch_row($rs))
//while (!$rs->EOF)
  {
        $ASIN=trim(mysql_result($rs,"ASIN"));

        $LocalSKU = trim(mysql_result($rs,"LocalSKU"));

        //$ASIN=trim($rs->fields[120]);
        if(trim($ASIN)!=""){
            //include('funtions.php');
            $shipArray = shipingPrice($ASIN);
            $Price=round((mysql_result($rs,"Price")),2);
            $Price2=round((mysql_result($rs,"Price2")),2);  

但是当我运行脚本时,我收到以下错误消息

警告:mysql_result() 期望参数 2 很长,给定字符串 在 C:\wamp1\www\nathan\amazonPrice.php 第 67 行

基本上,从查询结果中,我想选择ASIN和LocalSKU字段的值做进一步处理..

有人可以建议我在这里做错了什么吗?

【问题讨论】:

  • 请不要使用 mysql_* 函数 - 它已被弃用并且容易受到 sql-injection 的影响。使用 PDO 或 MySQLi。
  • 你的问题就在这里:mysql_result($rs,"Price")。该函数采用三个参数:记录集、行号和字段名称/编号。
  • @alfasin 你能建议我如何用 SQLi 替换这些 sql 函数吗?
  • @alfasin 说函数容易受到 SQL 注入攻击并切换到 PDO 和 mysqli 会有所帮助是错误的。 参数化语句 - 这可以保护您免受 SQL 注入。
  • 没有不使用占位符的借口,2012年你最好有一个非常的好借口使用mysql_query。如果你正在学习如何使用MySQL,请使用PDO 或mysqli。 Several examples 展示了正确执行此操作的各种方法。如果你现在学会了正确的技术,你就不必回去修复你造成的可怕的烂摊子了。

标签: php mysql sql apache phpmyadmin


【解决方案1】:

http://php.net/mysql_result

mysql_result 的第二个参数是你想要的行。它不是字符串字段。

您的代码相当糟糕。您可以通过以下方式大大简化它:

$row = mysql_fetch_assoc($rs);
$price = $row['price'];
$pric2 = $row['price2'];
etc...

【讨论】:

  • 你能建议我如何用 SQLi 替换这些 sql 函数吗?
  • php.net/mysqli。 mysqli的函数接口和普通的老mysql很相似。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-22
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 2012-01-24
  • 2021-07-05
相关资源
最近更新 更多