【问题标题】:Using SQL in PHP Results in Error PDO Statement [closed]在 PHP 中使用 SQL 导致错误 PDO 语句 [关闭]
【发布时间】:2014-11-18 06:11:57
【问题描述】:

我正在尝试在 PHP 中使用以下脚本将名称放入变量中:

$fileop = fgetcsv($handle,1000,";")
$prod_no = " SELECT no FROM e_produit WHERE nom LIKE ".$fileop[0]." ";
$stmt = $pdo->query($prod_no);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
echo $row;

但我在页面中得到的只是以下错误:

ERROR PDO Statement => errorCode='SELECT no FROM e_produit WHERE nom LIKE NAVIGATOR 80G' | error info =array ( 0 => '42000', 1 => 1064, 2 => '您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册以获取在 \'80G 附近使用的正确语法\' 在第 1' 行,) 在 C:\wamp\www\ma-fourniture\liens\pdo2.php 第 64 行"

【问题讨论】:

  • 那么这段代码有什么问题?您正在定义一个字符串,这段代码应该可以解决问题。如果您的意思是为什么您没有从数据库中获得任何结果,那么您并没有执行您的查询。您只是定义了一个恰好包含一些 sql 的字符串。
  • 您需要连接到数据库并将此查询传递给它,然后才能获得结果。
  • 也许发布整个页面的代码会有帮助?
  • nom 也应该被引用为它的字符串,你确定你想要LIKE 而不是=
  • 感谢您的回答。事实上,我已经通过以下方式执行了脚本: $pdo->query($prod_no);但我收到消息:您的 SQL 语法有错误。

标签: php sql


【解决方案1】:

你需要建立一个数据库连接并执行你的查询,比如

$db = new PDO('mysql:host=YOUR_HOSTNAME;dbname=YOUR_DBNAME;charset=utf8', 'YOUR_DB_USERNAME', 'YOUR_DB_PASSWORD');

$prod_no = " SELECT no FROM e_produit WHERE ".$fileop[0]." LIKE nom ";

$stmt = $db->query($prod_no);
$row = $stmt->fetch(PDO::FETCH_ASSOC);

php PDO

【讨论】:

    【解决方案2】:

    您根本没有进行任何类型的查询。您只是将查询字符串分配给变量。这就是你需要的:

    list($prod_no) = mysql_fetch_array(mysql_query(" SELECT no FROM e_produit WHERE ".$fileop[0]." LIKE nom "));
    

    但是,这只是使用 MySQL,假设您正在使用它。如果你不知道如何在 PHP 中使用 MySQL,你需要做教程。

    【讨论】:

    • 我不建议嵌套 MySQL 调用,因为在继续之前,它们都需要检查成功/失败。此外,这个库现在已被弃用,所以这里的答案通常不推荐它。
    • 我同意弃用,但由于他们没有具体说明他们正在使用什么,而且他们最初不知道如何拨打电话,我认为他们正在尝试使用这个方法。虽然至于嵌套,但我并没有真正看到它的问题。它仍然会给出一个错误,如果失败等可以检查。
    • mysql_query 将在查询错误时返回false,而mysql_fetch_array 需要资源作为其第一个参数。因此,嵌套专门防止在调用外部函数之前测试mysql_query 的输出。将导致的错误是 Stack Overflow 上的一个非常常见的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多